Pagini recente » Cod sursa (job #2646907) | Cod sursa (job #2424014) | Cod sursa (job #2378462) | Profil UBB_Badita_Zoltan_Paun | Cod sursa (job #2698126)
#include <iostream>
#include <stdio.h>
#define NMAX 2000
using namespace std;
struct om {
int T, P;
};
om v[NMAX + 1];
void mysort(int beg, int en) {
int b, e;
om piv, aux;
b = beg; e = en; piv = v[(b + e) / 2];
while (v[b].T < piv.T)
b++;
while (v[e].T > piv.T)
e--;
while (b < e) {
aux = v[b]; v[b] = v[e]; v[e] = aux;
do b++; while (v[b].T < piv.T);
do e--; while (v[e].T > piv.T);
}
if (beg < e)
mysort(beg, e);
if (e + 1 < en)
mysort(e + 1, en);
}
int maxim(int a, int b) {
return a > b ? a : b;
}
int main() {
FILE *fin, *fout;
int n, c, i, maxprofit, profitcur, newprofit, pret, j;
fin = fopen("carnati.in", "r");
fscanf(fin, "%d%d", &n, &c);
for (i = 1; i <= n; i++)
fscanf(fin, "%d%d", &v[i].T, &v[i].P);
mysort(0, n - 1);
maxprofit = 0;
v[0].T = v[1].T - 1;
for (i = 1; i <= n; i++) {
pret = v[i].P;
profitcur = 0;
for (j = 1; j <= n; j++) {
if (v[j].P < pret)
newprofit = maxim(profitcur - c * (v[j].T - v[j - 1].T), -c);
else
newprofit = maxim(profitcur + pret - c * (v[j].T - v[j - 1].T), pret - c);
maxprofit = maxim(newprofit, maxprofit);
profitcur = newprofit;
}
}
fout = fopen("carnati.out", "w");
fprintf(fout, "%d", maxprofit);
fclose( fout );
return 0;
}