# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
686663 | Farhan_HY | Nivelle (COCI20_nivelle) | C++14 | 182 ms | 1488 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define int long long
#define F first
#define S second
#define T int t; cin >> t; while(t--)
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const int N = 1e6 + 5;
const int M = 1e3 + 3;
const int inf = 1e18;
const int mod = 1e9 + 7;
int n, fst[27];
string s;
deque<int> pos[27];
main() {
IOS
cin >> n >> s;
s = '.' + s;
for(int i = 1; i <= n; i++)
pos[s[i] - 'a'].push_back(i);
for(int i = 0; i < 27; i++)
if (pos[i].size()) fst[i] = pos[i].front();
else fst[i] = n + 1;
double ans = 2.0;
int l = 0, r = 0;
for(int i = 1; i <= n; i++) {
int j = i, cnt = 0;
while(1) {
int c = 26;
for(int k = 0; k < 26; k++) {
if (fst[k] > j && fst[k] < fst[c])
c = k;
}
cnt++;
j = fst[c] - 1;
double cur = double(cnt) / (j - i + 1.0);
if (cur < ans) {
l = i, r = j;
ans = cur;
}
if (j == n) break;
j++;
}
pos[s[i] - 'a'].pop_front();
if (pos[s[i] - 'a'].size()) fst[s[i] - 'a'] = pos[s[i] - 'a'].front();
else fst[s[i] - 'a'] = n + 1;
}
cout << l << ' ' << r;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |