Cod sursa(job #125132)

Utilizator lamez0rBogdan Bondor lamez0r Data 20 ianuarie 2008 11:34:01
Problema Partitie Scor 10
Compilator c Status done
Runda preONI 2008, Runda 3, Clasa a 10-a Marime 0.82 kb
#include<stdio.h>

int main ()
{
long v[300000],i,n,d,max[300000],j,poz[300000],k,o=0,min[300000];
int ok;
j=1;
max[j]=-1000000;
min[j]=1000000;
FILE *f;
f=fopen("partitie.in","r");
fscanf(f,"%ld%ld",&n,&d);
for (i=1;i<=n;++i)
    {
    fscanf(f,"%ld",&v[i]);
    }
fclose(f);
for (i=1;i<=n;++i)
    {
    ok=0;
    for (k=1;k<=j&&!ok;++k)
	{
	if (  (v[i]-max[k]>=d||max[k]-v[i]>=d) && (v[i]-min[k]>=d||min[k]-v[i]>=d) )
	   {
	   if (v[i]>max[k])
	      max[k]=v[i];
	   if (v[i]<min[k])
	      min[k]=v[i];
	   ok=1;
	   poz[++o]=k;
	   }
	}
    if (!ok)
       {
       ++j;
       max[j]=v[i];
       min[j]=v[i];
       poz[++o]=j;
       }
    }
f=fopen("partitie.out","w");
fprintf(f,"%ld",j);
for (i=1;i<=o;++i)
    fprintf(f,"\n%ld",poz[i]);
fclose(f);
return 0;
}