Submission #696679

#TimeUsernameProblemLanguageResultExecution timeMemory
696679Hiennoob123Izbori (COCI22_izbori)C++14
15 / 110
76 ms14328 KiB
#include <bits/stdc++.h>
#define ll long long
#define pll pair<ll,ll>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
ll n;
ll A[200005];
map<ll,ll> idx;
map<ll,bool> nen;
ll cnt[200005];
void solve_all()
{
    ll ans = 0;
    for(int i = 1; i<= n; i++)
    {
        ll sum = 0, Max = 0;
        for(int j = 1; j<= n; j++) cnt[j] = 0;
        for(int j = i; j>= 1; j--)
        {
            cnt[A[j]]++;
            sum++;
            Max = max(Max, cnt[A[j]]);
            if(Max*2>sum)
            {
                //cout << j << " " << i << '\n';
                ans++;
            }
        }
    }
    cout << ans;
}
void solve()
{
    cin >> n;
    for(int i = 1; i<= n; i++)
    {
        cin >> A[i];
        nen[A[i]] = 1;
    }
    ll current = 0;
    for(auto u: nen)
    {
        current++;
        idx[u.fi] = current;
    }
    for(int i = 1; i<= n; i++)
    {
        A[i] = idx[A[i]];
        if(A[i]>2)
        {
            solve_all();
            return;
        }
    }
    map<ll,ll> M;
    M[0] = 1;
    ll cur = 0;
    ll ans = 0;
    for(int i = 1; i<= n; i++)
    {
        if(A[i]==1) cur++;
        else cur--;
        ans += M[cur];
        M[cur]++;
    }
    cout << (n*(n+1)/2)-ans;
}
int main()
{
    ios_base::sync_with_stdio(NULL) ; cin.tie(nullptr) ; cout.tie(nullptr);
    //freopen("B.inp","r",stdin);
    ll test_case = 1;
    while(test_case--)
    {
        solve();
    }
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...