#include <algorithm>
#include <cmath>
#include <iostream>
#include <string>
#include <vector>
#define ll long long
using namespace std;
long long a[100000], nxt[100000][26];
int main()
{
ll n, i, j;
cin >> n;
string s;
cin >> s;
ll l, r, cnt;
double ans = 1;
for (i = 0; i < n; i++)
{
a[i] = s[i] - 'a';
}
for (j = 0; j < 26; j++)
{
nxt[n][j] = n + 1;
}
for (i = n - 1; i >= 0; i--)
{
for (j = 0; j < 26; j++)
{
nxt[i][j] = nxt[i + 1][j];
}
nxt[i][a[i]] = i;
}
for (i = 0; i < n; i++)
{
cnt = 0;
vector<ll> v;
for (j = 0; j < 26; j++)
{
v.push_back(nxt[i][j]);
}
sort(v.begin(), v.end());
j = 0;
while (j < 26)
{
if (v[j] == n + 1)
{
break;
}
if (v[j] == a[i])
{
j++;
continue;
}
cnt++;
if (ans > (double)cnt / (v[j] - i))
{
ans = (double)cnt / (v[j] - i);
l = i, r = v[j] - 1;
}
j++;
}
cnt++;
if (ans > (double)cnt / (n - i))
{
ans = (double)cnt / (n - i);
l = i, r = n - 1;
}
}
cout << l + 1 << " " << r + 1;
}
| # | 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... |