Pagini recente » Istoria paginii runda/simulare_oji_2023_clasa_10/clasament | Cod sursa (job #2073622) | Cod sursa (job #696883) | Monitorul de evaluare | Cod sursa (job #1726006)
#include <stdio.h>
#include <algorithm>
using namespace std;
struct om{
int first,second;
}p[2005];
bool comp(om o1, om o2){
if(o1.first == o2.first){
return o1.second < o2.second;
}
return o1.first < o2.first;
}
int main(){
freopen("carnati.in", "r", stdin);
freopen("carnati.out", "w", stdout);
int n,i,j,sum,bst,C,id;
bst = 0;
scanf("%d %d",&n,&C);
for(i = 1;i <= n;i++){
scanf("%d %d",&p[i].first, &p[i].second);
}
sort(p+1, p+n+1, comp);
for(i = 1;i <= n;i++){
int P = p[i].second;
sum = 0;
id = 1;
for(j = 1;j <= n;j++){
if(p[j].second >= P){
sum += P;
}
if(sum-C*(p[j].first-p[id].first+1) < 0){
sum = 0;
id = j+1;
}else if(sum-C*(p[j].first-p[id].first+1) < P-C){
sum = P;
id = j;
bst = max(bst, sum-C);
}else{
bst = max(bst, sum);
}
}
}
printf("%d",bst);
return 0;
}