Cod sursa(job #812346)

Utilizator assa98Andrei Stanciu assa98 Data 13 noiembrie 2012 19:50:17
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;

struct sp
{
    int t,p;
} v[2100];

int n,cate;
int c;

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

int maxf;
int minn,maxx;


int act[1510];

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

    for(int i=1; i<=n; i++)
    {
        memset(act,0,sizeof(act));
        act[0]=-c;
        cate=1;
        for(int j=0; j<=v[n].t; j++)
        {
            if(j!=0)
                act[j]=act[j-1]-c;
            while(v[cate].t==j)
            {
                if(v[cate].p>=v[i].p)
                {
                    act[j]+=v[i].p;
                }
                cate++;
            }
        }

        minn=0;
        maxx=0;
        for(int j=0;j<=v[n].t;j++)
        {
            if(act[j]<minn)
                minn=act[j];
            if(act[j]-minn>maxx)
                maxx=act[j]-minn;
        }
        if(maxx>maxf)
            maxf=maxx;
    }
    printf("%d",maxf);
    return 0;
}