Pagini recente » Cod sursa (job #1679364) | Cod sursa (job #1620155) | Cod sursa (job #2381729) | Cod sursa (job #1094381) | Cod sursa (job #2059374)
#include<fstream>
using namespace std;
ifstream in("tribute.in");
ofstream out("tribute.out");
int n,dx,dy,vx[50001],vy[50001],x,y,mx,my;
long long minimx,minimy;
pair<long long,int>dp[50001],dp2[50001];
int main (void) {
in >> n;
in >> dx >> dy;
for (int i = 1; i <= n; i ++) {
in >> x >> y;
vx[x] ++;
vy[y] ++;
mx = max (mx,x);
my = max (my,y);
}
for (int i = 0; i <= mx-dx; i ++) {
if (i > 0){
dp[i].first = dp[i-1].first + dp[i-1].second;
dp[i].second = dp[i-1].second;
}
if (vx[i] > 0){
dp[i].second +=vx[i];
}
}
for (int i = mx; i >= dx; i --) {
if (i < mx){
dp2[i].first = dp2[i+1].first + dp2[i+1].second;
dp2[i].second = dp2[i+1].second;
}
if (vx[i] > 0){
dp2[i].second +=vx[i];
}
}
minimx = 1e15;
for (int i = 0; i <= mx-dx; i ++) {
minimx = min (minimx, dp[i].first + dp2[i+dx].first);
}
for (int i = 0; i <= mx; i ++)
dp[i].first = 0,dp[i].second = 0,dp2[i].first = 0,dp2[i].second = 0;
for (int i = 0; i <= my-dy; i ++) {
if (i > 0){
dp[i].first = dp[i-1].first + dp[i-1].second;
dp[i].second = dp[i-1].second;
}
if (vy[i] > 0){
dp[i].second +=vy[i];
}
}
for (int i = my; i >= dy; i --) {
if (i < my){
dp2[i].first = dp2[i+1].first + dp2[i+1].second;
dp2[i].second = dp2[i+1].second;
}
if (vy[i] > 0){
dp2[i].second +=vy[i];
}
}
minimy = 1e15;
for (int i = 0; i <= my-dy; i ++) {
minimy = min (minimy, dp[i].first + dp2[i+dy].first);
}
out << minimx+minimy;
return 0;
}