Cod sursa(job #1645003)

Utilizator RaduToporanRadu Toporan RaduToporan Data 10 martie 2016 10:37:21
Problema Carnati Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#include <algorithm>

using namespace std;
int n,c,i,nrcrt,x,G,bst[2005],maximul;
struct client
{
    int t,p;
};
client a[2005];

bool cmp(client a, client b)
{
    return a.t<=b.t;
}

int main()
{
    freopen("carnati.in","r",stdin);
    freopen("carnati.out","w",stdout);
    scanf("%d%d",&n,&c);
    for (i=1; i<=n; i++)
        scanf("%d%d",&a[i].t,&a[i].p);
    sort(a+1,a+n+1,cmp);

    for (nrcrt=1; nrcrt<=n; nrcrt++)
    {
        x=a[nrcrt].p;
        if (x<=a[1].p) bst[1]=max(0,x-c); else bst[1]=0;
        if (bst[1]>maximul) maximul=bst[1];
        for (i=2; i<=n; i++)
        {
            if (a[i].p>=x) G=x; else G=0;
            bst[i]=max(max(bst[i-1]-(a[i].t-a[i-1].t)*c+G,G-c),0);
            if (bst[i]>maximul) maximul=bst[i];
        }
    }
    printf("%d\n",maximul);
    return 0;
}