제출 #844399

#제출 시각아이디문제언어결과실행 시간메모리
844399vjudge1Nivelle (COCI20_nivelle)C++17
37 / 110
1052 ms21080 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> using namespace std; #define int long long #define ONLINE_JUDGE #ifndef ONLINE_JUDGE #define OPEN freopen(".in", "r", stdin); \ freopen(".out", "w", stdout); #else #define OPEN void(23); #endif void solve1(int n, string str) { str = '$' + str; double ans = 2; pair <int, int> cev; int l = 1, r = 1; while(r <= n && l <= n) { if(r + 1 <= n && str[r +1] == str[l]) r++; else { l = r +1; continue; } double calc = double(1.0f) / (r - l +1); if(calc < ans) { ans = calc; cev = {l, r}; } } bool ok = true; for(int i = 1; i +1 <= n; i++) ok &= str[i] == str[i +1]; if(!ok) { double calc = double(2.0f) / n; if(calc < ans) { ans = calc; cev = {1, n}; } } cerr << 'T' << ans; cout << cev.first << " " << cev.second; return; } void solve2(int n, string str) { str = '$' + str; vector <array <int, 26>> pref(n +1); for(int i = 0; i < 26; i++) pref[0][i] = 0; for(int i = 1; i <= n; i++) { pref[i] = pref[i -1]; pref[i][str[i] - 'a']++; } long double ans = 2; pair <int, int> inds; for(int l = 1; l <= n; l++) { for(int r = l; r <= n; r++) { array <int, 26> c; int tot = 0; for(int i = 0; i < 26; i++) c[i] = pref[r][i] - pref[l -1][i], tot += (c[i] != 0); long double cost = tot; cost /= (r - l +1); //cerr << l << " " << r << " " << cost << "\n"; if(cost < ans) { ans = cost; inds = {l, r}; } } } cout << inds.first << " " << inds.second << "\n"; return; } int32_t main() { OPEN; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; string str; cin >> n >> str; int cnta = count(str.begin(), str.end(), 'a'); int cntb = count(str.begin(), str.end(), 'b'); if(cnta + cntb == n) solve1(n, str); else solve2(n, str); }
#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...