Cod sursa(job #1622757)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 1 martie 2016 14:02:59
Problema Tribute Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
# include <fstream>
# define DIM 100010
using namespace std;
ifstream fin("tribute.in");
ofstream fout("tribute.out");
int y2,x2,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 () {
    fin>>n>>dx>>dy;
    minim2=minim1=minx=miny=DIM;
    for(i=1;i<=n;i++){
        fin>>x1>>y1;
        x[x1]++;
        y[y1]++;
        if(x1>maxx)
            maxx=x1;
        if(y1>maxy)
            maxy=y1;
        if(x1<minx)
            minx=x1;
        if(y1<miny)
            miny=y1;
    }
    nrx=0;
    for(i=minx;i<=maxx;i++){
        xs[i]+=nrx+xs[i-1];
        if(x[i]!=0)
            nrx+=x[i];
    }
    nrx=0;
    for(i=maxx;i>=minx;i--){
        xd[i]+=nrx+xd[i+1];
        if(x[i]!=0)
            nrx+=x[i];
    }
    nry=0;
    for(i=miny;i<=maxy;i++){
        ys[i]+=nry+ys[i-1];
        if(y[i]!=0)
            nry+=y[i];
    }
    nry=0;
    for(i=maxy;i>=miny;i--){
        yd[i]+=nry+yd[i+1];
        if(y[i]!=0)
            nry+=y[i];
    }
    for(i=0;i<=maxx;i++){
        val=xs[i]+xd[i+dx];
        if(val<minim1){
            minim1=val;
            x2=i;
        }

    }
    for(i=0;i<=maxy;i++){
        val=ys[i]+yd[i+dy];
        if(val<minim2){
            minim2=val;
            y2=i;
        }
    }
    fout<<minim1+minim2<<"\n";
    //fout<<x2<<" "<<y2;
    return 0;
}