Cod sursa(job #1624636)

Utilizator LeVladzCiuperceanu Vlad LeVladz Data 2 martie 2016 12:40:47
Problema Tribute Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
#define x first
#define y second
#define DIM 50002
using namespace std;
ifstream fin("tribute.in");
ofstream fout("tribute.out");
int f[DIM],s[DIM],ps[DIM],pd[DIM],minim[3],n,dx,dy,t,i;
pair <int , int > p[DIM];
int d[DIM],st;
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]++;
            }
            dx=dy;
        }
        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;
}