Pagini recente » Cod sursa (job #1668599) | Cod sursa (job #1192230) | Cod sursa (job #2354794) | Cod sursa (job #2373451) | Cod sursa (job #810280)
Cod sursa(job #810280)
#include<stdio.h>
#include<algorithm>
using namespace std;
struct MyStruct {int t,p;};
MyStruct a[2005];
int sp[1505];
inline bool MyComp(MyStruct a, MyStruct b)
{
return a.t<b.t;
}
int main()
{
freopen("carnati.in","r",stdin);
freopen("carnati.out","w",stdout);
int n,c,i,cf,u,max=-2000000000;
//citire, sortare:
scanf("%d%d",&n,&c);
for(i=1;i<=n;i++)
scanf("%d%d",&a[i].t,&a[i].p);
sort(a+1,a+n+1,MyComp);
//fixare cost:
for(int cc=1;cc<=n;cc++)
{
cf=a[cc].p;
//sume partiale:
u=1;
sp[0]=-c;
while(a[u].t==0)
if(a[u++].p>=cf)
sp[0]=sp[0]+cf;
for(i=1;i<=a[n].t;i++)
{
sp[i]=sp[i-1]-c;
while(a[u].t==i)
if(a[u++].p>=cf)
sp[i]=sp[i]+cf;
}
//gasire rezultat:
int min=0;
for(i=0;i<=a[n].t;i++)
{
if(sp[i]<min)
min=sp[i];
if(sp[i]-min>max)
max=sp[i]-min;
}
}
printf("%d\n",max);
return 0;
}