Pagini recente » Cod sursa (job #1079215) | Cod sursa (job #357752) | Cod sursa (job #294970) | Cod sursa (job #736339) | Cod sursa (job #474833)
Cod sursa(job #474833)
#include<fstream>
#include<algorithm>
using namespace std;
const char iname[]="carnati.in";
const char oname[]="carnati.out";
const int maxn=2005;
ifstream f(iname);
ofstream g(oname);
pair<int,int> a[maxn];
int i,j,n,d[maxn],maxt,k,last,c;
int main()
{
f>>n>>c;
for(i=1;i<=n;++i)
f>>a[i].first>>a[i].second;
sort(a+1,a+n+1);
a[0].first=-10000;
a[n+1].first=maxn*maxn;
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
{
k=(a[j].second>=a[i].second);
last=j-1;
while(a[j+1].first==a[j].first)
k+=(a[++j].second>=a[i].second);
k*=a[i].second;
d[j]=max(d[last]-(a[j].first-a[last].first-1)*c,0)+(k-c);
maxt=max(maxt,d[j]);
}
}
if(maxt<0)
maxt=0;
g<<maxt<<"\n";
}