Cod sursa(job #843355)

Utilizator Athena99Anghel Anca Athena99 Data 27 decembrie 2012 21:02:27
Problema Carnati Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 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=0,s=0,ind=0,gmax=-1;
    for(i=1;i<=n;i++)
    {
        if (v[i].p<value)
            continue;

        if (ind!=-1)
        {
            s-=(v[i].t-v[ind].t-1)*c;
            if (s<0)
                s=0;
        }
        else
            s=0;

        ind=i;
        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;
}