Pagini recente » Cod sursa (job #752191) | Cod sursa (job #2117383) | Cod sursa (job #2242930) | Cod sursa (job #399115) | Cod sursa (job #309324)
Cod sursa(job #309324)
#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;
}