Cod sursa(job #2467444)

Utilizator TheNextGenerationAyy LMAO TheNextGeneration Data 4 octombrie 2019 13:54:10
Problema Tribute Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("tribute.in");
ofstream out("tribute.out");
const int N = 50005;

struct p
{
    int x,y;
}v[N];
int cnt[2][N],n;
int solve(int st)
{
    int left=0,right=0,dist=0,Min = N;
    for (int i = st; i<=N-5; i++)
        {
            right+=cnt[1][i];
            dist+=cnt[1][i]*(i-st+1);
        }
    for (int i = st; i<=N-5; i++)
    {
        dist-=right;
        right-=cnt[1][i];
        left+=cnt[0][i];
        dist+=left;
        Min = min(Min,dist);
    }
    return Min;
}
int main()
{
    int dx,dy;
    in >> n >> dx >> dy;
    for (int i = 1; i<=n; i++)
        in >> v[i].x >> v[i].y;
    for (int i = 1; i<=n; i++)
    {
        cnt[1][v[i].x]++;
        cnt[0][v[i].x+dx+1]++;
    }
    int Minx = solve(dx);
    memset(cnt[0],0,sizeof(cnt[0]));
    memset(cnt[1],0,sizeof(cnt[1]));
    for (int i = 1; i<=n; i++)
    {
        cnt[1][v[i].y]++;
        cnt[0][v[i].y+dy+1]++;
    }
    int Miny = solve(dy);
    out << Minx + Miny;
}