제출 #460088

#제출 시각아이디문제언어결과실행 시간메모리
460088ak2006Nivelle (COCI20_nivelle)C++14
110 / 110
41 ms716 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; } if (num == 23){ //if (r == 82)assert(s.count(a[r - 1])); //for (int i = l;i<r;i++)s.insert(a[i]); //assert(s.size() <= num); //cout<<l<<" "<<r<<" "<<s.size()<<'\n'; } freq[a[r]]++; if (freq[a[r]] == 1)cnt++; r++; } if (cnt <= num){ //if (num == 23)cout<<"HERE "<<l<<" "<<r<<'\n'; 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++; } } //cout<<num<<" H "<<cur<<" "<<maxL<<" "<<maxR<<'\n'; if (num * ansCur < ansNum * cur){ ansCur = cur; ansNum = num; 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...