Cod sursa(job #477047)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 13 august 2010 10:14:13
Problema Tribute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#define Nmax 50002
#define INF 2147000000
#define D 50000

int cate[Nmax],cost[Nmax],cost2[Nmax],app[2][Nmax];
int n;

inline int Minim(int x,int y){ return x<y ? x:y; }

int main(){
	int i,k,x,y,d[2],min[2];
	freopen("tribute.in","r",stdin);
	freopen("tribute.out","w",stdout);
	scanf("%d%d%d",&n,&d[0],&d[1]);
	min[0]=min[1]=INF;
	for(i=1;i<=n;++i){
		scanf("%d%d",&x,&y);
		app[0][x]++; app[1][y]++;
	}
	
	for(k=0; k<2; ++k){
		for(i=0;i<=D;++i){
			cate[i]=cate[i-1]+app[k][i];
			cost[i]=cost[i-1]+cate[i-1];
		}
		for(i=D;i>=0;--i){
			cate[i]=cate[i+1]+app[k][i];
			cost2[i]=cost2[i+1]+cate[i+1];
		}
		for(i=0; i+d[k] <= D; ++i)
			min[k] = Minim(min[k], cost[i] + cost2[i+d[k]]);
	}
	
	printf("%d\n",min[0]+min[1]);
	fclose(stdin); fclose(stdout);
	return 0;
}