Submission #176057

# Submission time Handle Problem Language Result Execution time Memory
176057 2020-01-07T18:54:07 Z maskoff Bigger segments (IZhO19_segments) C++14
0 / 100
2 ms 376 KB
#include <bits/stdc++.h>
 
#define file ""

#define all(x) x.begin(), x.end()

#define sc second
#define fr first

#define pb push_back
#define mp make_pair

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

const int inf = 1e9;
const int MOD = 1e9 + 7;
                                                                 
int main() {                                    
    ios_base::sync_with_stdio(false);
  	cin.tie(nullptr);
  	int n;
  	cin >> n;
  	vector<ll> a(n + 1);
  	vector<ll>  pref(n + 1);
  	for (int i = 1; i <= n; i++)
  		cin >> a[i];
  	for (int i = 1; i <= n; i++)
  		pref[i] = pref[i - 1] + a[i];
  	vector<pair<ll, ll>> d(n + 1);
  	map<ll, pair<ll, ll>> ans;
  	vector<ll> all;
  	for (int i = 1; i <= n; i++) {
  		auto x = upper_bound(all.begin(), all.end(), pref[i]) - all.begin();
  		if (x == 0)	{
  			if (all.empty() || (ans[all.back()].fr == 1 && ans[all.back()].sc < pref[i])) {
  		 		all.pb(2 * pref[i]);
  		 		ans[2 * pref[i]].fr = 1ll;
  		 		ans[2 * pref[i]].sc = pref[i];
  			}
  			continue;
  		}        
  		x--;
  		d[i].fr = ans[all[x]].fr + 1;
  		d[i].sc = pref[i] - ans[all[x]].sc;
  		if (ans[all.back()].fr < d[i].fr || (ans[all.back()].fr == d[i].fr && ans[all.back()].sc < d[i].sc)) {
  		 	all.pb(d[i].sc + pref[i]);
  		 	ans[d[i].sc + pref[i]].fr = d[i].fr;
  		 	ans[d[i].sc + pref[i]].sc = pref[i];
  		}                                    
  	}
  	cout << ans[all.back()].fr;
    return false;
}               
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Incorrect 2 ms 376 KB Output isn't correct
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Incorrect 2 ms 376 KB Output isn't correct
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Incorrect 2 ms 376 KB Output isn't correct
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Incorrect 2 ms 376 KB Output isn't correct
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Incorrect 2 ms 376 KB Output isn't correct
10 Halted 0 ms 0 KB -