Cod sursa(job #714045)

Utilizator iarbaCrestez Paul iarba Data 15 martie 2012 11:55:45
Problema Tribute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
FILE *f,*g;
long l[50002],c[50002],sl[50002][2],sc[50002][2],n,maxl,maxc,i,y,x,kl,kc,nord,sud,est,vest,j;
long long a1,a2;
int main()
{
	f=fopen("tribute.in","r");
	g=fopen("tribute.out","w");
	fscanf(f,"%ld%ld%ld",&n,&kl,&kc);
	nord=n;sud=0;est=n;vest=0;
	for(i=1;i<=n;i++){fscanf(f,"%ld%ld",&x,&y);l[x]++;c[y]++;sl[0][1]+=x;sc[0][1]+=y;}
	sud+=l[0];nord-=l[0];
	vest+=c[0];est-=c[0];
	maxl=2000000000;maxc=maxl;
	for(i=1;i<=50001;i++){
		sl[i][1]=sl[i-1][1]-nord;
	    sl[i][0]=sl[i-1][0]+sud;
	    sud+=l[i];nord-=l[i];
		if(i>=kl){
			j=sl[i][1]+sl[i-kl][0];
			if(j<maxl){maxl=j;}
		         }
	                     }
	for(i=1;i<=50001;i++){
		sc[i][1]=sc[i-1][1]-est;
	    sc[i][0]=sc[i-1][0]+vest;
	    vest+=c[i];est-=c[i];
		if(i>=kc){
			j=sc[i][1]+sc[i-kc][0];
			if(j<maxc){maxc=j;}
		         }
		                 }
	a1=maxl;a2=maxc;a1+=a2;
	fprintf(g,"%lld",a1);
	fclose(f);fclose(g);
return 0;
}