Cod sursa(job #2851605)

Utilizator RobertAcAcatrinei Robert-Marian RobertAc Data 18 februarie 2022 21:03:17
Problema Tribute Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>
#define nmax 50005
using namespace std;

ifstream in("tribute.in");
ofstream out("tribute.out");

int x[nmax],y[nmax];
int dx,dy,n;

void input()
{
    in>>n>>dx>>dy;
    for(int i=0;i<n;i++)
    {
        int a,b;
        in>>a>>b;
        x[a]++;
        y[b]++;
    }
}

int getx()
{
    int i,j;
    int farther=0,closer=n;
    int sum=0;
    i=j=0;
    for(;j<=dx;j++)
    {
        closer-=x[j];
    }
    j--;
    for(int ii=j+1;ii<nmax;ii++)
    {
        sum+=(ii-j)*x[ii];
    }
    int minn=sum;
    while(j<nmax)
    {
        minn=min(minn,sum);
        farther+=x[i++];
        sum+=farther-closer;
        closer-=x[++j];
    }
    return minn;
}

int gety()
{
    int i,j;
    int farther=0,closer=n;
    int sum=0;
    i=j=0;
    for(;j<=dy;j++)
    {
        closer-=y[j];
    }
    j--;
    for(int ii=j+1;ii<nmax;ii++)
    {
        sum+=(ii-j)*y[ii];
    }
    int minn=sum;
    while(j<nmax)
    {
        minn=min(minn,sum);
        farther+=y[i++];
        sum+=farther-closer;
        closer-=y[++j];
    }
    return minn;
}

int main()
{
    input();
    out<<getx()+gety();
}