Cod sursa(job #2815692)

Utilizator AswVwsACamburu Luca AswVwsA Data 10 decembrie 2021 09:15:41
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <cstring>
#include <algorithm>
#define ull unsigned long long
using namespace std;

ifstream cin("carnati.in");
ofstream cout("carnati.out");
const int NMAX = 2003;

struct cetatean
{
    int t, p;
} v[NMAX];

bool cmp(cetatean a, cetatean b)
{
    return a.t < b.t;
}
int main()
{
    int n, c, i;
    cin >> n >> c;
    for (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 sc = 0, inc = 0;
        for (int j = 1; j <= n; j++)
        {
            int ex = 1;
            if (v[j].p < v[i].p)
                ex = 0;
            if (sc - c * (v[j].t - v[inc].t + 1) + ex * v[i].p < ex * v[i].p - c)
            {
                sc = ex * v[i].p;
                inc = j;
            }
            else
            {
                sc = sc + ex * v[i].p;
            }
            ans = max(ans, sc - c * (v[j].t - v[inc].t + 1));
        }
    }
    cout << ans << " ";
    //cout << ans;
}