Cod sursa(job #2698729)

Utilizator Antonia_onisoruantonia onisoru Antonia_onisoru Data 22 ianuarie 2021 21:30:02
Problema Carnati Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("carnati.in");
ofstream out("carnati.out");

const int MAXN = 2000;

int timp[MAXN], pret[MAXN], s[MAXN];

int main()
{
    int n, c, i, sum, profit, j, t;
    in>>n>>c;
    for( i = 0; i < n; i++ ){
      in>>timp[i]>>pret[i];
      //pret[i] = pret[i] - c * timp[i];
    }

    profit = -1;
    t = 0;
    for( i = 0; i < n; i++ ){

      sum = pret[i];
      //out<<sum<<'\n';
      t = 0;

      if( pret[0] >= sum )
        s[0] = sum;
      else{
        s[0] = 0;
        t = 0;
      }

      for( j = 1; j < n; j++ ){

        if( pret[j] >= sum){

          if( s[ j - 1 ] >= 0 && j != 1 ){
            s[j] = s[ j - 1 ] + sum - c * ( timp[j] - t );
          }
          else
            s[j] = sum;

          t = timp[j];
        }
        else
          s[j] = s[ j - 1 ];

      }

      for( j = 0; j < n; j++ ){
        //out<<s[j]<<" ";
        if( profit < s[j] )
          profit = s[j];
        s[j] = 0;
      }
      //out<<'\n';
    }

    out<<profit - c;
    return 0;
}