Pagini recente » Cod sursa (job #1230704) | Cod sursa (job #1547778) | Cod sursa (job #1885493) | Cod sursa (job #1848734) | Cod sursa (job #1279516)
#include <cstdio>
#include <queue>
#include <utility>
#include <set>
#include <list>
using namespace std;
bool cmp(int a, int b) { return a > b;}
typedef list<int>::iterator lit;
int main()
{
FILE *in = fopen("grupuri.in", "r");
FILE *out = fopen("grupuri.out", "w");
int n, k;
list<int> l;
fscanf(in, "%d %d", &k, &n);
for (int i = 0; i < n; i++) {
int x;
fscanf(in, "%d", &x);
if (x > 0)
l.push_front(x);
}
int ret = 0;
while (true) {
n = l.size();
if (k > n) {
break;
}
if (k == n) {
ret += l.back();
break;
}
lit it = l.begin();
for (int i = 0; i < k; ++i) ++it;
lit itk = it;
it--;
int dif = *(it) - (*itk) + 1;
ret += dif;
for (it = l.begin(); it != itk; ++it) {
(*it) -= dif;
}
l.sort(cmp);
while (!l.empty() && l.back() == 0)
l.pop_back();
};
fprintf(out, "%d", ret);
return 0;
}