Cod sursa(job #844528)

Utilizator Athena99Anghel Anca Athena99 Data 29 decembrie 2012 14:26:07
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <algorithm>

using namespace std;
int n=0,c=0;

struct str
{
    int t,p;
};
str v[2005];

bool comp(str x,str y)
{
    return x.t<y.t;
}

int gain(int value, int k)
{
    int i=1,gmax=-1,s=0,ind=0;

    for(i=1; i<=n; ++i)
    {
        if (v[i].p<value)
            continue;

        s=s-c*(v[i].t-v[ind].t-1);
        ind=i;

        if (s<0)
            s=0;

        s=s+value-c;

        if (s>gmax)
            gmax=s;
    }

    return gmax;
}

int main()
{
    int i=0,nr=-1,max=-1;

    freopen("carnati.in","r",stdin);
    freopen("carnati.out","w",stdout);

    scanf("%d%d",&n,&c);
    for (i=1; i<=n; ++i)
        scanf("%d%d",&v[i].t,&v[i].p);

    v[0].t=-1;

    sort(v+1,v+n+1,comp);

    for (i=1; i<=n; ++i)
    {
        nr=gain(v[i].p,i);
        if (nr>max)
            max=nr;
    }

    printf("%d",max);

    return 0;
}