제출 #877811

#제출 시각아이디문제언어결과실행 시간메모리
877811auslanderBigger segments (IZhO19_segments)C++17
0 / 100
1 ms2492 KiB
#include <algorithm>
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
typedef long long ll;

const int N = 500005;
ll arr[N], pref[N];

int main()
{
	ll i, n;
	cin >> n;
	for (i = 0; i < n; i++)
		cin >> arr[i];
	vector<ll>v;
	vector<ll>::iterator it;
	ll p = arr[0];
	ll k = 0;
	ll res = 1;
	for (i = 1; i < n; i++)
	{
		k += arr[i];
		v.push_back(k);
		if (k >= p)
		{
			res++;
			it = upper_bound(v.begin(), v.end(), (k - p) / 2);
			if (it == v.begin())
			{
				p = k;
				k = 0;
				v.erase(v.begin(), v.end());
			}
			else
			{
				ll e = distance(v.begin(), it);
				p = k - v[e - 1];
				k = 0;
				v.erase(v.begin(), v.end());
			}
		}
	}
	cout << res << endl;

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...