제출 #536633

#제출 시각아이디문제언어결과실행 시간메모리
536633Farhan_HYIzbori (COCI22_izbori)C++14
40 / 110
258 ms18008 KiB
#include <bits/stdc++.h>
#define int long long
#define float double
#define pb push_back
#define F first
#define S second
#define T int t; cin >> t; while(t--)
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

const int inf = 8e18;
const int N = 1e6 + 6;
const int M = 1e3 + 3;
const int LOG = 31;
const int mod = 1e9 + 7;
const float pi = atan(1) * 4;
int n, a[N], pre[N];
map<int, int> cnt;
multiset<int> st;

main()
{
    IOS
    cin >> n;
    for(int i = 1; i <= n; i++)
        cin >> a[i];
    if (n <= 2000)
    {
        int Ans = 0;
        for(int i = 1; i <= n; i++)
        {
            for(int j = i; j <= n; j++)
            {
                if (cnt[a[j]] != 0)
                    st.erase(st.find(cnt[a[j]]));
                st.insert(++cnt[a[j]]);
                Ans += (*st.rbegin() > (j - i + 1) / 2);
            }
            cnt.clear();
            st.clear();
        }
        cout << Ans;
    }
    else
    {
        for(int i = 1; i <= n; i++)
        {
            if (a[i] == 2)
                pre[i] = pre[i - 1] - 1;
            else
                pre[i] = pre[i - 1] + 1;
            cnt[pre[i]]++;
        }
        int Ans = n * (n + 1) / 2;
        for(int i = 1; i <= n; i++)
        {
            Ans -= cnt[pre[i - 1]];
            cnt[pre[i]]--;
        }
        cout << Ans;
    }
}

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp:22:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   22 | main()
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...