Cod sursa(job #2655189)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 3 octombrie 2020 15:39:35
Problema Carnati Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

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

int p[1 + TMAX];

bool functie(const pair<int, int> &a, const pair<int, int> &b)
{
    return a.first < b.first;
}

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;
    }

    sort(v + 1, v + 1 + n, functie);

    int t_max = v[n].first;

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

       for (int j = 0, k = 1; j <= t_max; j++)
       {
         p[j] = -c;

         while (k <= n && v[k].first == j)
         {
           if (v[k].second >= pret_fixat)
           {
             p[j] += pret_fixat;
           }

           k++;
         }
       }

       int sum_crt = 0;

       for (int j = 0; j <= t_max; j++)
       {
         sum_crt += p[j];

         if (sum_crt < 0)
         {
           sum_crt = 0;
         }

         maxim = max(maxim, sum_crt);
       }
    }

    out << maxim << '\n';

    return 0;
}