Pagini recente » Statistici cont de incercari (Liviu_Silviu) | Cod sursa (job #1791548) | Cod sursa (job #2104583) | Cod sursa (job #3216543) | Cod sursa (job #1560995)
#include <cstdio>
#define MAX 2000
using namespace std;
struct client{
int pret, t;
};
client v[MAX+1];
long long tmax, pmax, lim;
long long maxim(long long a, long long b)
{
if(a>b)
return a;
return b;
}
int d[MAX];
long long best[MAX];
int main()
{
freopen("carnati.in", "r", stdin);
freopen("carnati.out", "w", stdout);
int n, i, c, j;
long long maxt=-1, sfinal=0;
scanf("%d%d", &n, &c);
for(i=1;i<=n;i++){
scanf("%d%d", &v[i].t, &v[i].pret);
maxt=maxim(maxt,v[i].t);
}
for(i=1;i<=n;i++)
{
for(j=0;j<=maxt;j++)
d[j]=-1*c;
for(j=1;j<=n;j++)
{
if(v[j].pret>=v[i].pret)
d[v[j].t]+=v[i].pret;
}
//subsecventa de suma maxima
long long smax=-1000001;
best[0]=d[0];
for(j=1;j<=maxt;j++)
{
best[j]=maxim(best[j-1]+d[j], d[j]);
smax=maxim(smax, best[j]);
}
sfinal=maxim(sfinal, smax);
}
printf("%lld", sfinal);
return 0;
}