Cod sursa(job #474833)

Utilizator freak93Adrian Budau freak93 Data 5 august 2010 10:47:21
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>
#include<algorithm>

using namespace std;

const char iname[]="carnati.in";
const char oname[]="carnati.out";
const int maxn=2005;

ifstream f(iname);
ofstream g(oname);

pair<int,int> a[maxn];

int i,j,n,d[maxn],maxt,k,last,c;

int main()
{
    f>>n>>c;
    for(i=1;i<=n;++i)
        f>>a[i].first>>a[i].second;
    sort(a+1,a+n+1);
    a[0].first=-10000;
    a[n+1].first=maxn*maxn;
    for(i=1;i<=n;++i)
    {
        for(j=1;j<=n;++j)
        {
            k=(a[j].second>=a[i].second);
            last=j-1;
            while(a[j+1].first==a[j].first)
                k+=(a[++j].second>=a[i].second);
            k*=a[i].second;
            d[j]=max(d[last]-(a[j].first-a[last].first-1)*c,0)+(k-c);
            maxt=max(maxt,d[j]);
        }
    }
    if(maxt<0)
        maxt=0;
    g<<maxt<<"\n";
}