Cod sursa(job #596760)

Utilizator deneoAdrian Craciun deneo Data 19 iunie 2011 11:51:28
Problema Grupuri Scor 2
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;

int n, k, v[100001];

bool merge(int mg) {
	int i, a[100010], minus = 0, r = 0;
	memcpy(a, v, sizeof(v));
	while(a[n - mg + 1] != 0) {
		r += a[n - mg + 1];
		for(i = n - mg + 1; i <= n; ++i)
			a[i] -= a[n - mg + 1];
		sort(a + 1, a + n + 1);
	}
	if(r >= k)
		return 1;
	return 0;
}

int cauta() {
	int rez = 0, i;
	for(i = 1 << 20; i; i >>= 1)
		if(i <= n && merge(rez + i))
			rez += i;
	return rez;
}

int main() {
	int i;
	ifstream f("grupuri.in");
	f >> k >> n;
	for(i = 1; i <= n; ++i)
		f >> v[i];
	
	ofstream g("grupuri.out");
	g << cauta() << '\n';
	g.close();
	return 0;
}