Pagini recente » Cod sursa (job #2157594) | Cod sursa (job #1293641) | Cod sursa (job #1235446) | Cod sursa (job #1178868) | Cod sursa (job #2938432)
#include <fstream>
#include <iostream>
#include <algorithm>
#include <climits>
using namespace std;
ifstream f ("carnati.in");
ofstream g ("carnati.out");
const int NMAX = 1e6;
const long long VMAX = INT_MIN;
struct om{
long long int pret;
long long 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, v+1+n, comp);
long long sfinal = VMAX;
for(int i=0; i<=n; i++){
int pretSet = v[i].pret;
int st = 0;
long long smax = VMAX;
long long sum = VMAX;
for(int j=0; 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);
}
if(sfinal < 0)
sfinal = 0;
g<<sfinal;
return 0;
}