Submission #895778

#TimeUsernameProblemLanguageResultExecution timeMemory
895778IsamIzbori (COCI22_izbori)C++17
10 / 110
3044 ms3160 KiB
#include<bits/stdc++.h> using namespace std; constexpr int sz = 200005; int tree[sz << 2]; inline void update(int l, int r, int node, int x, int val){ if(l > x || r < x) return; if(l == r){ tree[node] += val; return; } int mid = l + ((r - l) >> 1); update(l, mid, node << 1, x, val); update(mid + 1, r, node << 1 | 1, x, val); tree[node] = tree[node << 1] + tree[node << 1 | 1]; return; } int get_ans(int l, int r, int node, int L, int R){ if(l > R || r < L) return 0; if(l >= L && r <= R) return tree[node]; int mid = l + ((r - l) >> 1); return get_ans(l, mid, node << 1, L, R) + get_ans(mid + 1, r, node << 1 | 1, L, R); } signed main(){ ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); int N; cin >> N; vector<int> A(N); bool it{false}; for(register int i = 0; i < N; ++i){ cin >> A[i]; it |= (A[i] > 2); if(A[i] == 2) update(1, N, 1, i + 1, 1); } auto sol = [&](){ auto chk = [&](int l, int r){ map<int, int> mp; for(register int i = l; i <= r; ++i) mp[A[i]]++; int that(0); for(auto &toto : mp) that = max(that, toto.second); return (that << 1) > (r - l + 1); }; int ans(0); for(register int i = 0; i < N; ++i){ for(register int j = i; j < N; ++j){ ans += chk(i, j); } } cout << ans << '\n'; exit(0); }; int ans(0); if(it) sol(); for(register int i = 0; i < N; ++i){ for(register int j = i; j < N; ++j){ int that = get_ans(1, N, 1, i + 1, j + 1); that = max(that, (j - i + 1) - that); ans += ((that << 1) > (j - i + 1)); } } cout << ans << '\n'; /* 2 2 1 2 3 2; 2; 1; 2; 3; 2 2; 2 2 1; 2 1 2; 2 2 1 2; 2 2 1 2 3; */ return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:33:19: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   33 |  for(register int i = 0; i < N; ++i){
      |                   ^
Main.cpp: In lambda function:
Main.cpp:42:20: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   42 |   for(register int i = l; i <= r; ++i) mp[A[i]]++;
      |                    ^
Main.cpp: In lambda function:
Main.cpp:48:23: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   48 |      for(register int i = 0; i < N; ++i){
      |                       ^
Main.cpp:49:24: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   49 |       for(register int j = i; j < N; ++j){
      |                        ^
Main.cpp: In function 'int main()':
Main.cpp:60:19: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   60 |  for(register int i = 0; i < N; ++i){
      |                   ^
Main.cpp:61:20: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   61 |   for(register int j = i; j < N; ++j){
      |                    ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...