(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #638436

#TimeUsernameProblemLanguageResultExecution timeMemory
638436ak2006Nivelle (COCI20_nivelle)C++14
110 / 110
30 ms768 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using vb = vector<bool>; using vvb = vector<vb>; using vi = vector<int>; using vvi = vector<vi>; using vl = vector<ll>; using vvl = vector<vl>; using vc = vector<char>; using vvc = vector<vc>; using vs = vector<string>; const ll mod = 1e9 + 7,inf = 1e18; #define pb push_back #define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); void setIO() { fast; } int main() { setIO(); int n; cin>>n; vi a(n + 1); for (int i = 1;i<=n;i++){ char x; cin>>x; a[i] = x - 'a'; } ll ansNum = 1,L = 1,R = 1,ansCur = 1; for (int num = 1;num<=26;num++){ vi freq(27); ll l = 1,r = 1,cnt = 0;//[l,r) ll maxL = 1,maxR = 1; ll cur = 1; while (r <= n){ while (cnt <= num && r <= n){ if (r - l > cur){ cur = r - l; maxL = l; maxR = r - 1; } freq[a[r]]++; if (freq[a[r]] == 1)cnt++; r++; } if (cnt <= num){ if (r - l > cur){ cur = r - l; maxL = l; maxR = r - 1; } } while (cnt > num){ freq[a[l]]--; if (freq[a[l]] == 0)cnt--; l++; } } if (num * ansCur < ansNum * cur){ ansCur = cur; ansNum = num; L = maxL; R = maxR; } else if (num * ansCur == ansNum * cur and (maxL < L or (maxL == L and maxR < R))){ L = maxL; R = maxR; } } cout<<L<<" "<<R<<'\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...