Pagini recente » Cod sursa (job #2849847) | Cod sursa (job #1215461) | Cod sursa (job #3343223) | Cod sursa (job #2053896) | Cod sursa (job #3324274)
#include <fstream>
using namespace std;
ifstream cin("carnati.in");
ofstream cout("carnati.out");
int v[1501];
int main()
{
int n,n2,c,k,maxx=-1000001,s,t,p,inc,st,dr;
cin>>n>>c;
for(n2=1;n2<=n;n2++) {
cin>>t>>p;
if(v[t]==0)
v[t]=p;
else
v[t]=min(v[t],p);
}
s=0;
p=-1;
inc=0;
for(st=0,dr=0;st<=dr && st<=1500 && dr<=1500;dr++) {
if(v[dr]>0) {
s++;
if(p==-1)
p=v[dr];
else {
if(s*min(p,v[dr])-(dr-st+1)*c>0)
p=min(p,v[dr]);
else
s--;
}
}
if(s*p-(dr-st+1)*c>maxx)
maxx=s*p-(dr-st+1)*c;
if(dr==1499) {
st++;
dr=st-1;
s=0;
p=-1;
inc=0;
}
}
/*for(n2=0;n2<=1500;n2++) {
if(s*p-(n2-inc+1)*c<0) {
s=0;
inc=n2;
}
if(v[n2]>0) {
s++;
if(p==-1)
p=v[n2];
else {
if(s*min(p,v[n2])-(n2-inc+1)*c>0)
p=min(p,v[n2]);
else
s--;
}
}
if(s*p-(n2-inc+1)*c>maxx)
maxx=s*p-(n2-inc+1)*c;
}*/
cout<<maxx;
return 0;
}