Cod sursa(job #777848)

Utilizator anca_gheorgheGheorghe Anca Elena anca_gheorghe Data 13 august 2012 16:25:22
Problema Carnati Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

ifstream in("carnati.in");
ofstream out("carnati.out");

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

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

int n, c;

int profit(int pret)
{
    int sc, smax=-1, i;
    if(v[1].p >= pret &&  pret > c) sc = pret - c;
    else sc = 0;

    for(i=2;i<=n;i++)
    {
        sc-=(v[i].t-v[i-1].t-1)*c;
        if(sc<0)
            sc=0;
        if(v[i].p>=pret) sc+=pret;
        sc -= c;
        if(sc>smax)
        {
            smax=sc;
        }
    }

    return smax;
}

int main()
{
    int i, pr, max=-1;
    in>>n>>c;
    for(i=1;i<=n;i++)
    {
        in>>v[i].t>>v[i].p;
    }
    sort(&v[1],&v[n+1],cmp);
    for(i=1;i<=n;i++)
    {
        pr=profit(v[i].p);
        if(pr>max) max = pr;
    }
    out << max;
    return 0;
}