Pagini recente » Cod sursa (job #1199783) | Cod sursa (job #38047) | Cod sursa (job #1266233) | Cod sursa (job #1638676) | Cod sursa (job #2863625)
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,m,best;
vector<pair<int,int>> v;
int Smax(int x)
{
int best = -1;
int st = 0,inte = 0,inte2 = 0,s = 0;
queue<int> q;
for(int i = 0; i < v.size(); ++i)
{
if(v[i].second < x)
{
continue;
}
if(v[i].second >= x)
{
s += x;
if(!inte) inte = v[i].first;
inte2 = v[i].first;
q.push(v[i].first);
}
int z = inte2 - inte + 1;
int presum = s - z * m;
while(presum < 0)
{
if(v[st].second < x)
{
st++;
continue;
}
s -= x;
q.pop();
if(q.empty())
{
presum = 0;
inte = 0,inte2 = 0;
break;
}
inte = q.front();
st++;
presum = s - (inte2 - inte + 1) * m;
}
best = max(best,presum);
}
return best;
}
signed main()
{
ifstream cin("carnati.in");
ofstream cout ("carnati.out");
cin >> n >> m;
for(int i = 1; i <= n; ++i)
{
int a,b;
cin >> a >> b;
v.push_back(make_pair(a,b));
}
sort(v.begin(),v.end());
for(int i = 0;i < v.size(); ++i)
best = max(best,Smax(v[i].second));
cout << best;
}