Cod sursa(job #1199472)
Utilizator | Data | 19 iunie 2014 15:16:39 | |
---|---|---|---|
Problema | Carnati | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.98 kb |
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("carnati.in");
ofstream cout("carnati.out");
int n,i,a,b,j,pivot,pret,start,aux,plata,finish,profit,ora,Pbest(-99999999),cumparatori(1),T[10000],P[10000];
int main()
{
cin>>n>>plata;
for (i=1;i<=n;++i) cin>>T[i]>>P[i];
Pbest=P[1]-plata;
start=T[1];
finish=T[1];
pret=P[1];
for (i=2;i<=n;++i){
cin>>T[i]>>P[i];
if (P[i]>pret) ++cumparatori;
if (cumparatori*pret-(T[i]-start+1)*plata > Pbest ) {
Pbest=cumparatori*pret-(T[i]-start+1)*plata ;
}
if (P[i]-plata > Pbest) {
Pbest=P[i]-plata;
start=T[i];
pret=P[i];
cumparatori=1;
}
aux=1;
for (j=i-1;j>=1;--j) {
if (P[j]>=P[i]) ++aux;
if (aux*P[i]-(T[i]-T[j]+1)*plata > Pbest ) {
Pbest=aux*P[i]-(T[i]-T[j]+1)*plata ;
pret=P[i];
cumparatori=aux;
start=T[j];
}
}
}
cout<<Pbest<<"\n";
return 0;
}