Pagini recente » Cod sursa (job #2126271) | Cod sursa (job #2391924) | Cod sursa (job #835470) | Cod sursa (job #886061) | Cod sursa (job #1722783)
#include <cstdio>
#include <algorithm>
using namespace std;
pair <int,int> v[50001];
int f[50001],s[50001],s2[50001],d[50001],d2[50001],sol[2];
int main()
{
FILE *fin=fopen ("tribute.in","r");
FILE *fout=fopen ("tribute.out","w");
int n,dx,dy,i,k;
sol[0]=sol[1]=2000000000;
fscanf (fin,"%d%d%d",&n,&dx,&dy);
for (i=1;i<=n;i++)
fscanf (fin,"%d%d",&v[i].first,&v[i].second);
for (k=0;k<2;k++){
for (i=0;i<=50000;i++)
f[i]=0;
for (i=1;i<=n;i++)
if (!k)
f[v[i].first]++;
else f[v[i].second]++;
s[0]=0;
s2[0]=f[0];
for (i=1;i<=50000;i++){
s[i]=s[i-1]+s2[i-1];
s2[i]=f[i]+s2[i-1];
}
d[50000]=0;
d2[50000]=f[50000];
for (i=49999;i>=0;i--){
d[i]=d[i+1]+d2[i+1];
d2[i]=f[i]+d2[i+1];
}
for (i=0;i+dx<=50000;i++)
if (sol[k]>s[i]+d[i+dx])
sol[k]=s[i]+d[i+dx];
dx=dy;
}
fprintf (fout,"%d",sol[1]+sol[0]);
return 0;
}