Pagini recente » Cod sursa (job #194104) | Cod sursa (job #469478) | Cod sursa (job #246299) | Cod sursa (job #589115)
Cod sursa(job #589115)
#include <iostream>
#include <cstdio>
#define Infinit 1000000000
using namespace std;
long N, K, CS[1000001], A[100001], AMax;
long long NGrupuri;
void Read ()
{
FILE *fin = fopen ("grupuri.in", "r");
long i;
fscanf (fin, "%ld%ld", &K, &N);
for (i=0; i<N; i++)
{
fscanf (fin, "%ld", &A[i]);
if (A[i]>AMax)
{
AMax=A[i];
}
}
fclose (fin);
}
void Type ()
{
FILE *fout = fopen ("grupuri.out", "w");
fprintf (fout, "%lld\n", NGrupuri);
fclose (fout);
}
void CountingSort ()
{
long i, j;
for (i=0; i<=AMax; i++)
{
CS[i]=0;
}
for (i=0; i<N; i++)
{
CS[A[i]]++;
}
N=0;
for (i=AMax; i>0; i--)
{
for (j=0; j<CS[i]; j++)
{
A[N++]=i;
}
}
}
int main ()
{
long i, k=0;
Read ();
while ((N>=K)&&(N-k>=K))
{
CountingSort ();
AMax=A[0];
k=0;
for (i=0; i<K; i++)
{
A[i]--;
if (A[i]==0)
{
k++;
}
}
NGrupuri++;
}
Type ();
return 0;
}