Cod sursa(job #31226)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 15 martie 2007 17:50:44
Problema Tribute Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
long long int n,dx,dy,a,b,i,x[50],y[50],l,s[50],ssup,sinf,j,m,solx,p,sc,soly,sol;
int main()
{
	FILE *f,*g;
	f=fopen("tribute.in","r");
	g=fopen("tribute.out","w");
	fscanf(f,"%ld%ld%ld",&n,&dx,&dy);
	for(i=1;i<=n;i++)
	{fscanf(f,"%ld%ld",&a,&b);
	 x[a]=x[a]+1;y[b]=y[b]+1;
	}
	l=50000;
	s[0]=x[0];
	for(i=1;i<=l;i++)
	{s[i]=s[i-1]+x[i];}
	m=dx;ssup=0;sinf=0;
	for(j=m;j<=l;j++)
	ssup=ssup+s[l]-s[m];
	solx=ssup;
	p=0;
	while(ssup)
	{
		sinf=sinf+s[p];
		ssup=ssup-s[l]+s[m+p];
		sc=ssup+sinf;
		if(sc<solx)solx=sc;
	}
	s[0]=y[0];
	for(i=1;i<=l;i++)
	{s[i]=s[i-1]+y[i];}
	m=dy;ssup=0;sinf=0;
	for(j=m;j<=l;j++)
	ssup=ssup+s[l]-s[m];
	soly=ssup;
	p=0;
	while(ssup)
	{
		sinf=sinf+s[p];
		ssup=ssup-s[l]+s[m+p];
		sc=ssup+sinf;
		if(sc<soly)soly=sc;
	}
	sol=solx+soly;
	fprintf(g,"%lld\n",sol);
	fcloseall();
	return 0;
}