Submission #370595

#TimeUsernameProblemLanguageResultExecution timeMemory
370595SeanliuBigger segments (IZhO19_segments)C++14
37 / 100
1575 ms68588 KiB
#include <iostream>
#include <utility>
#include <algorithm>
#include <deque>
#define pii pair<int,int> 
#define F first
#define S second
#define int long long int
using namespace std;

const int maxN = 1e5 + 326;
int N, arr[maxN];

deque<pii> dandiao[maxN];

signed main(){
	cin >> N;
	for(int i = 1; i <= N; i++){
		cin >> arr[i];
		arr[i] += arr[i - 1];
	}
	dandiao[0].push_back({0, 0});
	int ans = 0;
	for(int i = 1; i <= N; i++){
		deque<pii> tmp = deque<pii>();
		//cout << "i = " << i << endl;
		for(int j = 0; j < i; j++){
			auto p = upper_bound(dandiao[j].begin(), dandiao[j].end(), pii{arr[i] - arr[j], maxN});
			if(p == dandiao[j].begin()) continue;
			p--;
			//cout << "j = " << j << endl;
			//cout << "Found: " << p->F << " " << p->S << endl;
			tmp.emplace_back(arr[i] - arr[j], p->S + 1);
			//cout << "j = " << j << ", ans = " << p->S + 1 << endl;
			ans = max(ans, p->S + 1);
		}
		sort(tmp.begin(), tmp.end());
		for(auto [s, x] : tmp){
			if(!dandiao[i].size() || dandiao[i].back().S < x) dandiao[i].emplace_back(s, x);
		}
	}
	cout << ans << endl;
}

Compilation message (stderr)

segments.cpp: In function 'int main()':
segments.cpp:38:12: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   38 |   for(auto [s, x] : tmp){
      |            ^
#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...