Pagini recente » Cod sursa (job #1273251) | Cod sursa (job #2309328) | Cod sursa (job #2314791) | Cod sursa (job #315938) | Cod sursa (job #2059700)
#include<fstream>
using namespace std;
ifstream in("tribute.in");
ofstream out("tribute.out");
int n,dx,dy,vx[50001],vy[50001],x,y;
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] ++;
}
for (int i = 0; i <= 50000-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 = 50000; i >= dx; i --) {
if (i < 50000){
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 <= 50000-dx; i ++) {
minimx = min (minimx, dp[i].first + dp2[i+dx].first);
}
for (int i = 0; i <= 50000; i ++)
dp[i].first = 0,dp[i].second = 0,dp2[i].first = 0,dp2[i].second = 0;
for (int i = 0; i <= 50000-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 = 50000; i >= dy; i --) {
if (i < 50000){
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 <= 50000-dy; i ++) {
minimy = min (minimy, dp[i].first + dp2[i+dy].first);
}
minimx+=minimy;
out << minimx;
return 0;
}