Cod sursa(job #2718095)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 8 martie 2021 14:26:24
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <cstring>
#include <algorithm>

using namespace std;

const int NMAX = 2000;
const int TMAX = 1500;

pair <int, int> v[1 + NMAX];

int p[1 + TMAX];

int main()
{
    ifstream in("carnati.in");
    ofstream out("carnati.out");
    int n, c;
    int maxim = 0;

    in >> n >> c;
    for (int i = 1; i <= n; i++)
    {
        in >> v[i].first >> v[i].second;
    }

    for (int i = 1; i <= n; ++i)
    {
       int pret_fixat = v[i].second;

       memset(p, 0, sizeof(p));

       for (int j = 1; j <= n; j++)
       {
         if (v[j].second >= pret_fixat)
         {
           p[v[j].first] += pret_fixat;
         }
       }

       p[0] -= c;
       for (int t = 1; t <= TMAX; t++)
       {
         p[t] += p[t - 1] - c;
       }

       int minim = 0;

       for (int t = 0; t <= TMAX; t++)
       {
         if (minim > p[t])
         {
           minim = p[t];
         }

         if (maxim < p[t] - minim)
         {
           maxim = p[t] - minim;
         }
       }
    }

    out << maxim;

    return 0;
}