Cod sursa(job #589108)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 10 mai 2011 21:22:15
Problema Grupuri Scor 2
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#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=1; i<=AMax; i++)
	{
		for (j=0; j<CS[i]; j++)
		{
			A[N++]=i;
		}
	}
}

int main ()
{
	long i;
	Read ();
	while (N>=K)
	{
		CountingSort ();
		AMax=A[0];
		for (i=0; i<K; i++)
		{
			A[i]--;
		}
		NGrupuri++;
	}
	Type ();
	return 0;
}