Pagini recente » Cod sursa (job #3266962) | Cod sursa (job #458292) | Cod sursa (job #1381964) | Cod sursa (job #969164) | Cod sursa (job #2330041)
#include <iostream>
#include <stdio.h>
using namespace std;
int m[2000][4000], t[2000], p[2000];
int main() {
FILE *fin, *fout;
int n, i, j, min, tcurent, inceput, c, l, max, maxxx=0, sum;
fin = fopen("carnati.in", "r");
fout = fopen("carnati.out", "w");
fscanf(fin,"%d%d", &n, &c);
for(i=1;i<=n;i++){
fscanf(fin,"%d%d", &t[i], &p[i]);
}
min=p[1];
inceput=1;
for(i=1;i<=n;i++){
min = p[i];
m[i][1]=-(t[1]-1)*c;
j=2;
l=1;
while(j<=2*n){
if(p[l]>=min)
m[i][j]=min-c;
else
m[i][j]=-c;
j++;
m[i][j]=-(t[l+1]-t[l]-1)*c;
j++;
l++;
}
}
for(i=1;i<=n;i++){
sum=0;
max=0;
for(j=1;j<=2*n-1;j++){
if(sum+m[i][j]<0){
m[i][j]=0;
sum=0;
}
else{
m[i][j]=sum+m[i][j];
sum=m[i][j];
}
}
for(j=1;j<=2*n-1;j++){
if(m[i][j]>max)
max=m[i][j];
}
if(max>maxxx)
maxxx=max;
}
fprintf(fout,"%d", maxxx);
fclose(fin);
fclose(fout);
return 0;
}