Cod sursa(job #3211102)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 8 martie 2024 15:35:37
Problema Tribute Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>
using namespace std;
ifstream fin ("tribute.in");
ofstream fout ("tribute.out");
int n,a,b,i,x,y,minx,miny;
int frxst[50001],fryst[50001],frxdr[50001],frydr[50001],ssx[50001],sdx[50001],ssy[50001],sdy[50001];
int main()
{
    ///minimul pe ox+minimul pe oy
    fin>>n>>a>>b;
    for (i=1; i<=n; i++)
    {
        fin>>x>>y;
        frxst[x]++;
        fryst[y]++;
        frxdr[x]++;
        frydr[y]++;
    }
    for (i=1; i<=50000; i++)
        frxst[i]+=frxst[i-1];
    for (i=49999; i>=0; i--)
        frxdr[i]+=frxdr[i+1];
    ssx[0]=0;
    for (i=1; i<=50000; i++)
        ssx[i]=ssx[i-1]+frxst[i-1];
    sdx[50000]=0;
    for (i=49999; i>=0; i--)
        sdx[i]=sdx[i+1]+frxdr[i+1];
    minx=sdx[a];
    for (i=1; i<=50000-a; i++)
        minx=min (minx,ssx[i]+sdx[i+a]);
    for (i=1; i<=50000; i++)
        fryst[i]+=fryst[i-1];
    for (i=49999; i>=0; i--)
        frydr[i]+=frydr[i+1];
    ssy[0]=0;
    for (i=1; i<=50000; i++)
        ssy[i]=ssy[i-1]+fryst[i-1];
    sdy[50000]=0;
    for (i=49999; i>=0; i--)
        sdy[i]=sdy[i+1]+frydr[i+1];
    miny=sdy[b];
    for (i=1; i<=50000-b; i++)
        miny=min (miny,ssy[i]+sdy[i+b]);
    fout<<minx+miny;
    return 0;
}