Pagini recente » Cod sursa (job #204875) | Cod sursa (job #794826) | Cod sursa (job #1582281) | Cod sursa (job #2304539) | Cod sursa (job #1276149)
#include <cstdio>
#include <queue>
#include <utility>
#include <set>
using namespace std;
typedef pair<int,int> mp;
class mycmp
{
public:
bool operator() (const mp &a, const mp &b) const
{
return a.first < b.first;
}
};
int main()
{
FILE *in = fopen("cuburi.in", "r");
FILE *out = fopen("cuburi.out", "w");
int n, k;
fscanf(in, "%d %d", &k, &n);
priority_queue<mp, vector<mp>, mycmp> heap;
for (int i = 0; i < n; i++) {
int x;
fscanf(in, "%d", &x);
mp p = make_pair(x, i);
heap.push(p);
}
for (int ret = 0; ; ret++) {
set<mp> s;
for (int i = 0; i < k; i++) {
if (heap.empty())
break;
mp p = heap.top();
if (p.first <= 0)
break;
p.first--;
s.insert(p);
heap.pop();
}
if (s.size() != k) {
fprintf(out, "%d", ret);
break;
}
for (set<mp>::iterator it = s.begin(); it != s.end(); ++it) {
heap.push(*it);
}
}
return 0;
}