Pagini recente » Cod sursa (job #2125654) | Cod sursa (job #3242838) | Cod sursa (job #392494) | Cod sursa (job #103111) | Cod sursa (job #2644707)
#include <bits/stdc++.h>
#define SSTR( x ) static_cast< std::ostringstream & >( \
( std::ostringstream() << std::dec << x ) ).str()
using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef pair<int,int> ii;
typedef vector<int> vi;
typedef vector<pair<int,int> > vii;
ifstream fi("tribute.in");
ofstream fo("tribute.out");
ll n,dx,dy,a,b,X[100005],Y[100005];
ll re1,re2,optimx,optimy;
ll calc_x()
{
///calculam costul daca luam segmentul 0,dx ca ok
ll cost=0,dr=0,st=0,minim = 0,loc = 0;
for(ll i=dx+1;i<n;i++){
dr+=X[i];
cost+=X[i]*(i-dx);
}
minim = cost;
///incercam segmentele i,dx+i
for(ll i=1;i<n-dx+2;i++){
//adaugam la stanga i-1
st+=X[i-1];
//adaugam st la cost
cost += st;
//scadem dr din cost
cost-=dr;
//scadem ce prinem in dx+i
dr-=X[dx+i];
if(minim>cost){
loc = i;
minim = cost;
}
}
return minim;
}
ll calc_y()
{
///calculam costul daca luam segmentul 0,dy ca ok
ll cost=0,dr=0,st=0,minim = 0,loc = 0;
for(ll i=dy+1;i<n;i++){
dr+=Y[i];
cost+=Y[i]*(i-dy);
}
minim = cost;
///incercam segmentele i,dx+i
for(ll i=1;i<n-dy+2;i++){
//adaugam la stanga i-1
st+=Y[i-1];
//adaugam st la cost
cost += st;
//scadem dr din cost
cost-=dr;
//scadem ce prinem in dx+i
dr-=Y[dy+i];
if(minim>cost){
loc = i;
minim = cost;
}
}
return minim;
}
int main()
{
///cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
fi>>n>>dx>>dy;
for(ll i=1;i<=n;i++){
fi>>a>>b;
X[a]++;Y[b]++;
}
fo<<calc_x()+calc_y();
return 0;
}