Cod sursa(job #1562607)

Utilizator armandpredaPreda Armand armandpreda Data 5 ianuarie 2016 12:39:15
Problema Carnati Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

const int LIM=2001;
int n, c;
struct cli
{
    int t, p;
} v[LIM];
bool cmp(cli a, cli b){ return a.t<b.t; }
int profit(int x)
{
    int ans=0, cur=0, este=0;
    for(int i=1; i<=n; ++i)
    {
        if(este)
        {
            cur-=c*(v[i].t-v[i-1].t);
            if(x<=v[i].p) cur+=x;
        }
        else
            if(x<=v[i].p and x>c)
            {
                este=1;
                cur=x-c;
            }
        if(cur<0)
            este=cur=0;
        if(ans<cur) ans=cur;
    }
    return ans;
}
int main()
{
    cin>>n>>c;
    for(int i=1; i<=n; ++i)
        cin>>v[i].t>>v[i].p;
    sort(v+1, v+n+1, cmp);
    int ans=0;
    for(int i=1; i<=n; ++i)
    {
        int x=profit(v[i].p);
        if(ans<x) ans=x;
    }
    cout<<ans;
    return 0;
}