Cod sursa(job #182350)

Utilizator ErgoVicol Sergiu Constantin Ergo Data 20 aprilie 2008 19:00:29
Problema Partitie Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
// Partitie . infoareana
// Schimb sortarea la mutarea pe linux
#include <fstream>
#include <algorithm>
using namespace std;

#define NMAX 300009

ifstream fin("partitie.in");
ofstream fout("partitie.out");

int main()
{
	int A[2][NMAX],n,s;
	long long aux;
	int i,j;

	fin>>n>>s;
	for (i=1;i<=n;i++)
	{
		fin>>A[1][i];
		A[0][i]=i;
	}

	for (i=1;i<=n-1;i++)
		for (j=i+1;j<=n;j++)
			if (A[1][i]>A[1][j])
			{
				A[1][i]+=A[1][j];
				A[1][j]=A[1][i]-A[1][j];
				A[1][i]-=A[1][j];
				A[0][i]+=A[0][j];
				A[0][j]=A[0][i]-A[0][j];
				A[0][i]-=A[0][j];
			}
	int Sf,St;
	Sf=St=1;
	int max=0;
	for (Sf=1;Sf<=n;Sf++)
		{
			while (A[1][Sf]-A[1][St]>=s)
			{
				if (Sf-St>max) max=Sf-St;
				St++;
			}

		}
	fout<<max<<'\n';
	for (i=1,j=1;i<=n;i++,j=j%max+1)
		A[1][A[0][i]]=j;
	for (i=1;i<=n;i++)
		fout<<A[1][i]<<'\n';
	fout.close();
	return 0;
}