Cod sursa(job #1624647)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 2 martie 2016 12:44:36
Problema Tribute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>

#define x first
#define y second
#define DIM 50002

using namespace std;

int f[DIM],s[DIM],ps[DIM],pd[DIM],n,dx,dy,t,i,minim[3];
int st,d[DIM];

pair<int, int> p[DIM];



ifstream fin ("tribute.in");

ofstream fout ("tribute.out");

int main (){

    fin>>n>>dx>>dy;
    for (i=1;i<=n;i++)
        fin>>p[i].x>>p[i].y;

    for (t=1;t<=2;t++){
        for (i=0;i<=50000;i++)
            f[i] = 0;
        for (i=1;i<=n;i++){
            if (t == 1)
                f[ p[i].x ]++;
            else
                f[ p[i].y ]++;
        }
        s[0] = 0;
        ps[0] = f[0];
        for (i=1;i<=50000;i++){
            s[i] = s[i-1] + ps[i-1];
            ps[i] = ps[i-1] + f[i];
        }
        d[50000] = 0;
        pd[50000] = f[50000];
        for (i=49999;i>=0;i--){
            d[i] = d[i+1] + pd [i+1];
            pd[i] = pd[i+1] + f[i];
        }

        minim[t] = 2000000000;
        for (st = 0;st+dx<=50000;st++){
            if (minim[t] > s[st] + d[st+dx])
                minim [t] = s[st] + d[st+dx];
        }

        dx = dy;
    }
    fout<<minim[1] + minim[2];


    return 0;
}