Cod sursa(job #2341996)

Utilizator AndreiCroitoruAndrei Croitoru AndreiCroitoru Data 12 februarie 2019 15:27:49
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("carnati.in");
ofstream out("carnati.out");
struct om
{
    int t;
    int p;
};
bool cmp(om a, om b)
{
    return a.t < b.t;
}
om v[2001];
int main()
{
    int pr = -999999, n, prmax = -1, c, pret, G;
    in>>n>>c;
    for(int i = 1; i<=n; i++)
    {
        in>>v[i].t>>v[i].p;
    }
    sort(v+1, v+n+1, cmp);
    v[0].t = v[1].t;
    for(int j  = 1; j<=n; j++)
    {
        pret = v[j].p;
        pr = 0;
        int ans = -9999999;
        for(int i = 1; i<=n; i++)
        {
            if(v[i].p>=pret)
                G = pret;
            else
                G = 0;
            pr = max(pr - (v[i].t - v[i-1].t)*c, 0);
            pr+=G;
            ans = max(ans, pr - c);

            if(ans>prmax)
            {
                prmax = ans;
            }
        }
    }
    out<<prmax;
    return 0;
}