Cod sursa(job #1622775)

Utilizator razvandraghiciDraghici Razvan razvandraghici Data 1 martie 2016 14:12:47
Problema Tribute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
# include <fstream>
# define DIM 50010

using namespace std;
int x[DIM], y[DIM], val, nrx, nry, i, x1, y1, n, dx, dy, xs[DIM], ys[DIM], xd[DIM], yd[DIM], minim1, minim2, maxx, maxy, minx, miny;
int main()
{
    ifstream fin("tribute.in");
    ofstream fout("tribute.out");
    fin>>n>>dx>>dy;
    minim2=minim1=minx=miny=2000000000;
    for(i=1;i<=n;i++){
        fin>>x1>>y1;
        x[x1]++;
        y[y1]++;
    }

    nrx=x[0];
    for(i=1;i<=50000;i++){
        xs[i]=xs[i-1]+nrx;
        if(x[i]!=0)
            nrx+=x[i];
    }
    nrx=0;
    for(i=50000;i>=0;i--){
        xd[i]=xd[i+1]+nrx;
        if(x[i]!=0)
            nrx+=x[i];
    }
    nry=y[0];
    for(i=1;i<=50000;i++){
        ys[i]=ys[i-1]+nry;
        if(y[i]!=0)
            nry+=y[i];
    }
    nry=0;
    for(i=50000;i>=0;i--){
        yd[i]=yd[i+1]+nry;
        if(y[i]!=0)
            nry+=y[i];
    }
    for(i=0;i<=50000-dx;i++){
        val=xs[i]+xd[i+dx];
        if(val<minim1)
            minim1=val;

    }
    for(i=0;i<=50000-dy;i++){
        val=ys[i]+yd[i+dy];
        if(val<minim2)
            minim2=val;

    }
    fout<<minim1+minim2<<"\n";
    return 0;
}