Pagini recente » Cod sursa (job #907446) | Cod sursa (job #1683855) | Cod sursa (job #1153795) | Cod sursa (job #631172) | Cod sursa (job #2938084)
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
ifstream f ("carnati.in");
ofstream g ("carnati.out");
const int NMAX = 1e6;
const long long VMAX = 2e10;
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;
}