Cod sursa(job #2359405)

Utilizator divianegoescuDivia Negoescu divianegoescu Data 28 februarie 2019 20:23:39
Problema Tribute Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#define x first
#define y second
#define K 50000
using namespace std;
ifstream fin("tribute.in");
ofstream fout("tribute.out");
int n,t,i,dx,dy,f[K+2],S[K+2],D[K+2],PS[K+2],PD[K+2],minim[3];
pair <int,int> v[K+2];
int main(){
    fin>>n>>dx>>dy;
    for(i=1;i<=n;i++)
        fin>>v[i].x>>v[i].y;
    for(t=1;t<=2;t++){
        for(i=1;i<=n;i++)
            if(t==1)f[v[i].x]++;
            else f[v[i].y]++;
        S[0]=0; PS[0]=f[0];
        for(i=1;i<=K;i++){
            S[i]=S[i-1]+PS[i-1];
            PS[i]=PS[i-1]+f[i];
        }
        D[K]=0; PD[K]=f[K];
        for(i=K-1;i>=0;i--){
            D[i]=D[i+1]+PD[i+1];
            PD[i]=PD[i+1]+f[i];
        }
        minim[t]=2000000000;
        for(i=0;i+dx<=K;i++)
            minim[t]=min(minim[t],S[i]+D[i+dx]);
        if(t==2)break;
        for(i=0;i<=K;f[i]=0,i++);
        dx=dy;
    }
    fout<<minim[1]+minim[2];
    return 0;
}