Cod sursa(job #1276149)

Utilizator whoasdas dasdas who Data 25 noiembrie 2014 23:43:44
Problema Grupuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#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;
}