Cod sursa(job #2320271)

Utilizator vladuteluVlad Oancea vladutelu Data 14 ianuarie 2019 16:32:55
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 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;
}