Pagini recente » Cod sursa (job #495940) | Cod sursa (job #777720) | Cod sursa (job #676985) | Cod sursa (job #2034207) | Cod sursa (job #1001874)
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
inline int max(int a, int b){
return a > b ? a : b;
}
inline int min(int a, int b){
return a > b ? b : a;
}
struct carnati{
int x,y;
}v[2300];
bool cmp(carnati a , carnati b){
if(a.x<b.x) return 1;
if(a.x>b.x) return 0;
if(a.y<b.y) return 1;
return 0;
}
int f[2300];
int main(){
FILE *in=fopen("carnati.in","r");
FILE *out=fopen("carnati.out","w");
int N,C; fscanf(in,"%d%d",&N,&C);
int k,m,M=0;
for(int i = 1 ; i<= N ; ++i)
fscanf(in,"%d%d",&v[i].x,&v[i].y);
sort(v+1,v+N+1,cmp);
for(int i = 1 ; i <= N ; ++i){
k=1;
for(int j = 0 ; j <= v[N].x ; ++j){
f[j]=f[j-1]-C;
while(v[k].x==j)
if(v[k++].y>=v[i].y)
f[j]+=v[i].y;
}
m=0;
for(int j = 0 ; j <= v[N].x ; ++j){
m=min(m,f[j]);
M=max(M,f[j]-m);
}
}
fprintf(out,"%d\n",M);
return 0;
}