# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
536632 | Farhan_HY | Izbori (COCI22_izbori) | C++14 | 90 ms | 16308 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 <= 300)
{
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) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |