Pagini recente » Cod sursa (job #1191999) | Cod sursa (job #1735592) | Cod sursa (job #1973361) | Cod sursa (job #2573507) | Cod sursa (job #1905668)
#include <cstdio>
const int ST=-1;
const int INF=2000000000;
using namespace std;
int lista[1501], val[2001], next[2001];
int main(){
int n, c, i, tmax, t, x, sc, smax, p, k;
FILE *fin, *fout;
fin=fopen("carnati.in", "r");
fout=fopen("carnati.out", "w");
fscanf(fin, "%d%d", &n, &c);
for(i=0; i<=1500; i++){
lista[i]=ST;
}
tmax=-INF;
for(i=0; i<n; i++){
fscanf(fin, "%d%d", &t, &x);
val[i]=x;
next[i]=lista[t];
lista[t]=i;
if(tmax<t){
tmax=t;
}
}
smax=-INF;
for(i=0; i<n; i++){
k=val[i];
sc=0;
for(t=0; t<=tmax; t++){
sc-=c;
p=lista[t];
while(p!=ST){
if(k<=val[p]){
sc+=k;
}
p=next[p];
}
if(smax<sc){
smax=sc;
}
if(sc<0){
sc=0;
}
}
}
fprintf(fout, "%d\n", smax);
fclose(fin);
fclose(fout);
return 0;
}