Submission #893656

# Submission time Handle Problem Language Result Execution time Memory
893656 2023-12-27T08:46:34 Z vjudge1 Izbori (COCI22_izbori) C++17
40 / 110
3000 ms 5208 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){
	   		ll mp[n * 2 + 1];
            for(int i = 0; i <= 2 * n + 1; i++) mp[i] = 0;
	        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 + n]++;
	        }
	        cur = 0;
	        for(ll i = 1; i <= n; i++){
		        ans -= mp[act + n];
		        if(a[i] == x){
			        cur--;
			        act--;
		        }
		        else{
			        cur++;
			        act++;
		        }
		        mp[cur + n]--;
	        }	
        }
   	}
   	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 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 396 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 396 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 57 ms 348 KB Output is correct
8 Correct 1 ms 344 KB Output is correct
9 Correct 28 ms 484 KB Output is correct
10 Correct 28 ms 348 KB Output is correct
11 Correct 32 ms 348 KB Output is correct
12 Correct 28 ms 344 KB Output is correct
13 Correct 32 ms 596 KB Output is correct
14 Correct 28 ms 348 KB Output is correct
15 Correct 28 ms 600 KB Output is correct
16 Correct 28 ms 348 KB Output is correct
17 Correct 9 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1033 ms 3416 KB Output is correct
2 Correct 1448 ms 4508 KB Output is correct
3 Correct 812 ms 2804 KB Output is correct
4 Correct 1579 ms 4700 KB Output is correct
5 Correct 1634 ms 4948 KB Output is correct
6 Correct 1721 ms 4956 KB Output is correct
7 Correct 1759 ms 5124 KB Output is correct
8 Correct 1569 ms 5120 KB Output is correct
9 Correct 1589 ms 5208 KB Output is correct
10 Correct 1885 ms 5128 KB Output is correct
11 Correct 1109 ms 5128 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 396 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 57 ms 348 KB Output is correct
8 Correct 1 ms 344 KB Output is correct
9 Correct 28 ms 484 KB Output is correct
10 Correct 28 ms 348 KB Output is correct
11 Correct 32 ms 348 KB Output is correct
12 Correct 28 ms 344 KB Output is correct
13 Correct 32 ms 596 KB Output is correct
14 Correct 28 ms 348 KB Output is correct
15 Correct 28 ms 600 KB Output is correct
16 Correct 28 ms 348 KB Output is correct
17 Correct 9 ms 344 KB Output is correct
18 Correct 1033 ms 3416 KB Output is correct
19 Correct 1448 ms 4508 KB Output is correct
20 Correct 812 ms 2804 KB Output is correct
21 Correct 1579 ms 4700 KB Output is correct
22 Correct 1634 ms 4948 KB Output is correct
23 Correct 1721 ms 4956 KB Output is correct
24 Correct 1759 ms 5124 KB Output is correct
25 Correct 1569 ms 5120 KB Output is correct
26 Correct 1589 ms 5208 KB Output is correct
27 Correct 1885 ms 5128 KB Output is correct
28 Correct 1109 ms 5128 KB Output is correct
29 Correct 1132 ms 5200 KB Output is correct
30 Execution timed out 3059 ms 2396 KB Time limit exceeded
31 Halted 0 ms 0 KB -