Pagini recente » Istoria paginii runda/abcdefghijklmnopqrstuvwxyz/clasament | Cod sursa (job #2131531) | Istoria paginii runda/dutzpalacsinta/clasament | Cod sursa (job #2597956) | Cod sursa (job #2317077)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n,C;
struct client
{
int timp,bani;
};
client clien[2001];
int min1=1000001,max1=-1;
int sol=0;
int profit;
int profi(int val)
{
int profit_p=0;
int stat=clien[1].timp-1;
int maxim_l=0;
for (int i=1 ; i<=n ; i++)
{
if (clien[i].bani>=val)
profit_p+=val;
profit_p-=C*(clien[i].timp-stat);
stat=clien[i].timp;
if (maxim_l<profit_p)
maxim_l=profit_p;
if (profit_p<0)
{
profit_p=0;
stat=clien[i+1].timp-1;
}
}
return maxim_l;
}
int main()
{
freopen("carnati.in","r",stdin);
freopen("carnati.out","w",stdout);
cin>>n>>C;
for (int i=1 ; i<=n ; i++)
{
cin>>clien[i].timp>>clien[i].bani;
if (min1>clien[i].bani)
min1=clien[i].bani;
if (max1<clien[i].bani)
max1=clien[i].bani;
}
int st=min1,dr=max1;
while (st<=dr)
{
int mij=(st+dr)/2;
profit=profi(mij);
if (profit>sol)
{
st=mij+1;
sol=profit;
}
else
{
dr=mij-1;
}
}
cout<<sol;
return 0;
}