Pagini recente » Cod sursa (job #900953) | Cod sursa (job #72211) | Cod sursa (job #3159574) | Cod sursa (job #2707782) | Cod sursa (job #2938078)
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
ifstream f ("carnati.in");
ofstream g ("carnati.out");
const int NMAX = 2e3;
const long long VMAX = 2e9;
struct om{
int pret;
int timp;
} v[NMAX+1];
bool comp(om x, om y){
return x.timp < y.timp;
}
int main()
{
int n, angajat;
f >> n >> angajat;
long long smax = -VMAX;
for(int i=1; i<=n; i++)
f >> v[i].timp >> v[i].pret;
sort(v+1, v+1+n, comp);
long long sfinal = -VMAX;
for(int i=1; i<=n; i++){
int pretSet = v[i].pret;
int st = 0;
long long smax = -VMAX;
long long sum = -VMAX;
for(int j=1; j<=n; j++){
if(pretSet <= v[j].pret){
if(sum - (long long)angajat*(1 + v[j].timp - v[st].timp) < 0)
sum = 0, st = j;
sum += pretSet;
}
smax = max(smax, sum - (long long)angajat*(1 + v[j].timp - v[st].timp));
}
sfinal = max(sfinal, smax);
}
g<<sfinal;
return 0;
}