Pagini recente » Istoria paginii utilizator/dobredi | Istoria paginii utilizator/dobredi | Cod sursa (job #3361545)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("carnati.in");
ofstream cout("carnati.out");
//int t[2001], p[2001];
int main(){
int n, c, mx=0;
vector<pair<int, int>> cl;
cin>>n>>c;
for(int i=1;i<=n;i++){
int in1, in2;
cin>>in1>>in2;
cl.push_back({in1, in2});
}
sort(cl.begin(),cl.end());
for(int pret=0;pret<n;pret++){
int kd[2001], st=0;
for(int i=0;i<=1500;i++){
int sum=0;
while(st<n && cl[st].first==i){
if(cl[st].second>=cl[pret].second) sum+=cl[pret].second;
st++;
}
kd[i]=sum;
}
int sum=0, cnt=1;
for(int i=0;i<=1500;i++){
sum+=kd[i];
mx=max(mx, sum-cnt*c);
if(sum-cnt*c<0){
sum=0;
cnt=0;
}
cnt++;
}
}
cout<<mx;
}