Submission #893630

# Submission time Handle Problem Language Result Execution time Memory
893630 2023-12-27T07:56:59 Z devvops Izbori (COCI22_izbori) C++17
40 / 110
3000 ms 14676 KB
#include <iostream>
#include <fstream>
#include <iomanip>
#include <vector>
#include <set>
#include <map>
#include <cstring>
#include <string>
#include <cmath>
#include <cassert>
#include <ctime>
#include <algorithm>
#include <sstream>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <cstdlib>
#include <cstdio>
#include <iterator>
#include <functional>
#include <unordered_set>
#include <unordered_map>
#include <stdio.h>
#include <bitset>
#include <cstdint>
#include <cassert>
#include <functional>
#include <complex>
#include <climits>
#include <random>
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx2,popcnt,lzcnt,abm,bmi,bmi2,fma,tune=native")

using namespace std;

#define pb push_back
#define F first
#define S second
#define ll long long
#define ull unsigned long long
#define all(x) x.begin(), x.end() 
#define speed ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)
const int mod = (int) 1e9 + 7;
const int N = (int) 2e5 + 1, bruh = 450;
 
ll a[N], n, k;
map<int, int> cnt;
 
signed main(){
   	speed;
   	cin >> n;
   	for(int i = 1; i <= n; i++){
   		cin >> a[i];
   		cnt[a[i]]++;
   	} 
   	ll ans = 0;
   	for(auto [x, sz] : cnt){
   		if(sz > bruh){
	   		map <ll, ll> mp;
	        ll cur = 0, act = 0;
	        ans = (1LL * (n * (n + 1))) / 2LL;
	        for(ll i = 1; i <= n; i++){
		        if(a[i] == x) cur--;
		        else cur++;
		        mp[cur]++;
	        }
	        cur = 0;
	        for(ll i = 1; i <= n; i++){
		        ans -= mp[act];
		        if(a[i] == x){
			        cur--;
			        act--;
		        }
		        else{
			        cur++;
			        act++;
		        }
		        mp[cur]--;
	        }	
        }
   	}
   	for(int i = 1; i <= n; i++){
   		map<int, int> cnt1;
   		int lst = -1, lstA = -1;
   		for(int j = i; j <= n; j++){
   			if((j - i + 1) > 2 * bruh) break;
   			if(a[j] == lstA) lst++;
   			++cnt1[a[j]];
   			int sz = (j - i) + 1;
   			if(lst > (sz / 2) && cnt[lstA] <= bruh) ans++;
   			else if(cnt1[a[j]] > (sz / 2) && cnt[a[j]] <= bruh){
   				ans++;
   				lst = cnt1[a[j]];
   				lstA = a[j];
   			}
   		}
   	}
   	cout << ans;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 600 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 600 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 58 ms 532 KB Output is correct
8 Correct 1 ms 344 KB Output is correct
9 Correct 30 ms 348 KB Output is correct
10 Correct 31 ms 456 KB Output is correct
11 Correct 30 ms 480 KB Output is correct
12 Correct 30 ms 348 KB Output is correct
13 Correct 30 ms 348 KB Output is correct
14 Correct 30 ms 348 KB Output is correct
15 Correct 31 ms 484 KB Output is correct
16 Correct 31 ms 348 KB Output is correct
17 Correct 10 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1179 ms 1536 KB Output is correct
2 Correct 1537 ms 1848 KB Output is correct
3 Correct 886 ms 1256 KB Output is correct
4 Correct 1710 ms 2128 KB Output is correct
5 Correct 1763 ms 1956 KB Output is correct
6 Correct 1877 ms 2068 KB Output is correct
7 Correct 1877 ms 2040 KB Output is correct
8 Correct 1795 ms 2068 KB Output is correct
9 Correct 1767 ms 2040 KB Output is correct
10 Correct 1914 ms 2036 KB Output is correct
11 Correct 1263 ms 14520 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 600 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 58 ms 532 KB Output is correct
8 Correct 1 ms 344 KB Output is correct
9 Correct 30 ms 348 KB Output is correct
10 Correct 31 ms 456 KB Output is correct
11 Correct 30 ms 480 KB Output is correct
12 Correct 30 ms 348 KB Output is correct
13 Correct 30 ms 348 KB Output is correct
14 Correct 30 ms 348 KB Output is correct
15 Correct 31 ms 484 KB Output is correct
16 Correct 31 ms 348 KB Output is correct
17 Correct 10 ms 344 KB Output is correct
18 Correct 1179 ms 1536 KB Output is correct
19 Correct 1537 ms 1848 KB Output is correct
20 Correct 886 ms 1256 KB Output is correct
21 Correct 1710 ms 2128 KB Output is correct
22 Correct 1763 ms 1956 KB Output is correct
23 Correct 1877 ms 2068 KB Output is correct
24 Correct 1877 ms 2040 KB Output is correct
25 Correct 1795 ms 2068 KB Output is correct
26 Correct 1767 ms 2040 KB Output is correct
27 Correct 1914 ms 2036 KB Output is correct
28 Correct 1263 ms 14520 KB Output is correct
29 Correct 1270 ms 14676 KB Output is correct
30 Execution timed out 3055 ms 2396 KB Time limit exceeded
31 Halted 0 ms 0 KB -