Pagini recente » Cod sursa (job #3228414) | Cod sursa (job #2316387) | Cod sursa (job #3284898) | Cod sursa (job #2971443) | Cod sursa (job #1435442)
#include <fstream>
#include <algorithm>
#include <cstring>
using namespace std;
ifstream in("carnati.in");
ofstream out("carnati.out");
const int MAX_N = 2000;
const int MAX_T = 1500;
struct Person {
int time;
int price;
};
Person P[MAX_N + 1];
int V[MAX_T + 1];
int getProfit(int def_price, int salary, int n);
int main() {
int n, salary, i, max_sum = 0;
in >> n >> salary;
for(i = 1; i <= n; i++)
in >> P[i].time >> P[i].price;
for(i = 1; i <= n; i++)
max_sum = max(max_sum, getProfit(P[i].price, salary, n));
out << max_sum << '\n';
return 0;
}
int getProfit(int def_price, int salary, int n) {
int i, maxT = 0;
memset(V, 0, sizeof(V));
for(i = 1; i <= n; i++) {
if(P[i].price >= def_price)
V[P[i].time] += def_price;
maxT = max(maxT, P[i].time);
}
for(i = 1; i <= maxT; i++)
V[i] -= salary;
int sum = 0, max_sum = 0;
for(i = maxT; i; i--) {
if(sum < 0) sum = 0;
sum += V[i];
max_sum = max(max_sum, sum);
}
return max_sum;
}