Pagini recente » Cod sursa (job #1857431) | Rating anca preda (annk) | Cod sursa (job #1873479) | Cod sursa (job #886475) | Cod sursa (job #1356039)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("carnati.in");
ofstream fout("carnati.out");
pair<int,int>p[2005];
long double sum;
long long s,maxim,d;
int p1,u,st,i,n,mid,c,v[2005],j;
int main(){
fin>>n>>c;
for(i=1;i<=n;i++){
fin>>p[i].first>>p[i].second;
v[i]=p[i].second;
sum+=v[i];
}
sum/=n;
sort(v+1,v+n+1);
p1=1;
u=n;
while(p1<=u){
mid=(p1+u)/2;
if(sum>=v[mid]){
p1=mid+1;
}else{
u=mid-1;
}
}
sum=v[p1];
for(i=1;i<=n;i++){
if(p[i].second<sum){
p[i].first=p[i].second=0;
}
}
sort(p+1,p+n+1);
i=1;
while(p[i].second==0){
i++;
}
maxim=-20000000000;
for(;i<=n;i++){
s=sum;
d=0;
for(j=i+1;j<=n && (long long)d*c<=s;j++){
s+=sum;
d=p[j].first-p[i].first+1;
if(maxim<s-d*c*1LL){
maxim=s-d*c*1LL;
}
}
}
fout<<maxim;
return 0;
}