Cod sursa(job #2324909)

Utilizator PredaBossPreda Andrei PredaBoss Data 21 ianuarie 2019 18:19:25
Problema Tribute Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("tribute.in");
ofstream fout("tribute.out");
vector<bool>line[50005],column[50005];
int n,val_x,val_y,x,y,l,r,mn_x,mn_y,counter_l,counter_r;
long long sum_x,sum_y;
int main()
{
    fin>>n>>val_x>>val_y;
    mn_x=INT_MAX;
    mn_y=INT_MAX;
    for(int i=1;i<=n;i++)
    {
        fin>>x>>y;
        mn_x=min(mn_x,x);
        mn_y=min(mn_y,y);
        sum_x+=x;
        sum_y+=y;
        line[x].push_back(1);
        if(x+val_x<=50000)
        line[x+val_x].push_back(0);
        column[y].push_back(1);
        if(y+val_y<=50000)
        column[y+val_y].push_back(0);
    }
    l=0;
    r=sum_x;
    counter_r=n;
    counter_l=0;
    for(int i=0;i<=50000;i++)
    {
        for(int j=0;j<line[i].size();j++)
        {
            if(line[i][j])
                counter_r--;
            else
                counter_l++;
        }
        sum_x=min(sum_x,1LL*(l+r));
        r-=counter_r;
        l+=counter_l;
    }
    l=0;
    r=sum_y;
    counter_r=n;
    counter_l=0;
    for(int i=0;i<=50000;i++)
    {
        for(int j=0;j<column[i].size();j++)
        {
            if(column[i][j])
                counter_r--;
            else
                counter_l++;
        }
        sum_y=min(sum_y,1LL*(l+r));
        r-=counter_r;
        l+=counter_l;
    }
    fout<<sum_x+sum_y;
    return 0;
}