Submission #893497

#TimeUsernameProblemLanguageResultExecution timeMemory
893497vjudge1Izbori (COCI22_izbori)C++17
25 / 110
54 ms11608 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() const int N = (int)2e5 + 5; const ll mod = (int)1e9 + 7; const ll inf = (int)(1e9) + 100; map<int, int> ma; int cnt[N], n, a[N]; bool cs3 = 1; void sub3() { map<int, int> CNT; ll pref = 0, ans = 0; CNT[0]++; for (int i = 1; i <= n; i++) { if (a[i] == 2) pref += 1; else pref -= 1; ans += CNT[pref]; CNT[pref]++; } cout << (n * 1LL * (n + 1)) / 2 - ans; } void solve() { cin >> n; vector<int> v; for (int i = 1; i <= n; i++) { cin >> a[i]; v.pb(a[i]); if (a[i] > 2) cs3 = 0; } sort(all(v)); v.erase(unique(all(v)), v.end()); int timer = 0; for (auto i : v) { ma[i] = ++timer; } if (cs3) { sub3(); return; } for (int i = 1; i <= n; i++) a[i] = ma[a[i]]; if (n <= 300) { int ans = 0; for (int i = 1; i <= n; i++) { for (int j = i; j <= n; j++) { bool g = 0; for (int k = i; k <= j; k++) { cnt[a[k]]++; if (cnt[a[k]] >= (j - i + 1) / 2 + 1) { g = 1; break; } } for (int k = i; k <= j; k++) cnt[a[k]] = 0; ans += g; } } cout << ans; return; } } signed main() { ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); int T = 1; //cin >> T; while (T--) solve(); 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...