문제

링크

풀이

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
 
void solve(void) {
  int r, c; cin >> r >> c;
  int n; cin >> n;
  vector<int> h(n);
  for (int i=0; i<n; i++) cin >> h[i];
  sort(h.begin(), h.end(), greater<int>());
 
  int ans = min(c, n), idx = 0;
  vector<int> cur(c);
  for (int i=0; i<min(c, n); i++) {
    cur[i] = h[i];
  }
 
  for (int i=min(c, n); i<n; i++) {
    if (h[i] >= cur[idx]) continue;
    cur[idx] = h[i];
    ans++;
    idx = (idx + 1) % c;
  }
  cout << min(ans, r*c);
}
 
int main(void) {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
 
  solve();
  return 0;
}