Submission #844483

#TimeUsernameProblemLanguageResultExecution timeMemory
844483vjudge1Nivelle (COCI20_nivelle)C++17
37 / 110
1056 ms13656 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; #define pb push_back #define endl '\n' #define fi first #define se second #define fio ios_base::sync_with_stdio(false);cin.tie(NULL); #define CDIV(a,b) (((a)+(b)-(1))/(b)) const ll inf = 1e17 + 5; const ll mod = 1e9 + 7; const ll N = 1e3 + 30; int mod_(int a, int b) { if(a >= 0)return a % b; a += (-a/b + 1) * b; return a % b; } ld eps = 1e-9; struct p{ vector<int>pref; p() { pref.assign(26,0); } p operator-(const p& b) { p res; for(int i = 0; i < 26; ++i) { res.pref[i] = pref[i] - b.pref[i]; } return res; } }; void solve() { int n; string a; cin >> n >> a; bool c = any_of(a.begin(), a.end(), [&](char ch){return ch != 'a' and ch != 'b';}); if(!c) { a.pb('z'); int cnt = 1, mx = 1, l = 0, maxl = 0, maxr = 0; for(int i = 1; i <= n; ++i) { if(a[i] != a[i - 1]) { if(cnt > mx) { mx = cnt; maxl = l; maxr = i - 1; } l = i; cnt = 1; } else cnt++; } if(2 * (maxr - maxl + 1) <= n)maxl = 0, maxr = n - 1; cout << maxl + 1 << ' ' << maxr + 1 << endl; } else { set<char>s; vector<p>pref(n); pref[0].pref[a[0] - 'a'] = 1; for(int i = 1; i < n; ++i) { pref[i] = pref[i - 1]; pref[i].pref[a[i] - 'a']++; } long double ans = 1; int ansl = 0, ansr = 0; for(int l = 0; l < n; ++l) { for(int r = l + 1; r < n; ++r) { p col = pref[r] - (l ? pref[l - 1] : p()); int cnt = 0; for(int i : col.pref)cnt += !!i; if((ld)cnt / (r - l + 1) < ans) { ans = (ld)cnt / (r - l + 1); ansl = l; ansr = r; } } } cout << ansl + 1 << ' ' << ansr + 1 << endl; } } int main() { fio; //int t; cin >> t; while(t--) { solve(); } }
#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...