Cod sursa(job #309324)

Utilizator drag0s93Mandu Dragos drag0s93 Data 30 aprilie 2009 01:17:44
Problema Grupuri Scor 12
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<cstdio>
#include<algorithm>
#include<vector>

#define IN "grupuri.in","r",stdin
#define OUT "grupuri.out","w",stdout

using namespace std;

int K , N ;
//vector<int> V(100020);
int V[100020];
int inceput = 1;
int inc = 1;
int multime()
{
	int sf = 0;
	for(int i = 1 ; i <= N; ++i)	if(V[i])	sf = i;
	for(int i = 1; i <= N ; ++i)	if(V[i])	{inc = i;break;}
	return sf ;
}
int cmp(const void *p , const void *q)
{
	int x = *(int*)p,y = *(int*)q;
	if(x > y)	return 1;
	else return -1;
	return 0;
}
int main()
{
	freopen(IN);
	freopen(OUT);
	scanf("%d%d",&K,&N);
	for(int i = 1 ; i <= N ; ++i)	scanf("%d",&V[i]);
	int grupe = 0;
	int nr ;
	int E = 1;
	while(E)
	{
		nr = multime();
		if(nr - inc + 1< K)	break;
		for(int j = 1 ; j <= nr ; ++j)
			if(V[j] && nr - j + 1 == K)
			{
				inceput = j;
				break;
			}
		for(int i = inceput ; i <= nr ; ++i)	--V[i];
		++grupe;
		qsort(V + 1 , nr ,  sizeof(V[0]) , cmp);
	}
	printf("%d",grupe);
	return 0;
}