Cod sursa(job #843306)

Utilizator Athena99Anghel Anca Athena99 Data 27 decembrie 2012 18:58:57
Problema Carnati Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>
#include <cassert>
#include <algorithm>
#define dim 2005

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

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

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

int gain(int value, int k)
{
    int i=1,gmax=0,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=0,max=0;

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

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

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

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

    assert(printf("%d\n",max));

    return 0;
}