Submission #1088618

#TimeUsernameProblemLanguageResultExecution timeMemory
1088618StaheosArt Exhibition (JOI18_art)C++14
100 / 100
372 ms21036 KiB
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
	long long n;
	cin >> n;
	auto ab = new pair<long long, long long>[n];

	for (long long i = 0; i < n; i++)
	{
		cin >> ab[i].first >> ab[i].second;
	}
	std::sort(ab, ab + n);

	long long amin = 0;
	long long s = 0;
	long long m = 0;
	for (long long i = 0; i < n; i++)
	{
		s += ab[i].second;
		//while (amin < i && (s - (ab[i].first - ab[amin].first) < s - ab[amin].second - (ab[i].first - ab[amin + 1].first)))
		while (amin < i && ( ab[amin].first < - ab[amin].second + ab[amin + 1].first))
		{
			s -= ab[amin].second;
			amin++;
		}
		if (ab[i].second > s - (ab[i].first - ab[amin].first))
		{
			s = ab[i].second;
			amin = i;
		}
		if (s - (ab[i].first - ab[amin].first) > m)
		{
			m = s - (ab[i].first - ab[amin].first);
		}
	}

	cout << m << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...