Pagini recente » Cod sursa (job #3149136) | Cod sursa (job #153517) | Cod sursa (job #2052023) | Cod sursa (job #1126912) | Cod sursa (job #589112)
Cod sursa(job #589112)
#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 Valid (long N)
{
long i, k=0;
for (i=0; i<N; i++)
{
if (A[i]!=0)
{
k++;
}
}
if (k>=K)
{
return 1;
}
return 0;
}
int main ()
{
long i;
Read ();
while ((N>=K)&&(Valid (N)==1))
{
CountingSort ();
AMax=A[0];
for (i=0; i<K; i++)
{
A[i]--;
}
NGrupuri++;
}
Type ();
return 0;
}