Pagini recente » Cod sursa (job #1700574) | Cod sursa (job #1460416) | Cod sursa (job #367376) | Cod sursa (job #1611083) | Cod sursa (job #1234956)
#include <stdio.h>
#define NIL -1
#define INF 2000000000
#define MAXN 2000
#define MAXT 1500
int lista[MAXT+1], val[MAXN], next[MAXN];
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<=MAXT; i++){
lista[i]=NIL;
}
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!=NIL){
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;
}