#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MASK(x) (1LL << (x))
#define BIT(x, i) (((x) >> (i)) & 1)
#define SZ(x) ((int) (x).size())
#define ALL(a) (a).begin(), (a).end()
#define FOR(i, a, b) for (int i = (a); i <= (b); ++i)
#define FORD(i, a, b) for (int i = (a); i >= (b); --i)
#define debug(x) cerr << "[" << #x << " = " << (x) << "]" << endl
#define left __left
#define right __right
#define prev __prev
#define fi first
#define se second
template <class X, class Y>
bool maximize(X &x, Y y) {
if (x < y) return x = y, true;
else return false;
}
template <class X, class Y>
bool minimize(X &x, Y y) {
if (x > y) return x = y, true;
else return false;
}
int lenS;
string s;
int cnt[27];
namespace subtask2 {
bool check() {
return (lenS <= 2000);
}
void solve() {
s = '*' + s;
pair <int, int> result = {1, 1};
pair <int, int> ans = {1, 1}; // num diff / num element;
FOR(i, 1, lenS) {
memset(cnt, 0, sizeof(cnt));
int diff = 0;
FOR(j, i, lenS) {
cnt[s[j] - 'a']++;
if (cnt[s[j] - 'a'] == 1) ++diff;
if (ans.fi * (j - i + 1) > diff * ans.se) {
ans = make_pair(diff, j - i + 1);
result = make_pair(i, j);
}
}
}
cout << result.fi << " " << result.se;
}
};
namespace subtask5 {
void solve() {
s = '*' + s;
// with each numDiff, find maxLength;
pair <int, int> result = {1, 1};
pair <int, int> ans = {1, 1}; // num diff / num element;
FOR(numDiff, 1, 26) {
memset(cnt, 0, sizeof(cnt));
int diff = 0;
int l = 1, r = 1, len = 0;
pair <int, int> cur_pos = {-1, -1};
while (l <= lenS && r <= lenS) {
cnt[s[r] - 'a']++;
if (cnt[s[r] - 'a'] == 1) ++diff;
while (diff > numDiff) {
cnt[s[l] - 'a']--;
if (cnt[s[l] - 'a'] == 0) --diff;
++l;
}
if (diff == numDiff) {
if (maximize(len, r - l + 1)) cur_pos = make_pair(l, r);
}
++r;
}
if (len == 0) break;
if (ans.fi * len > numDiff * ans.se) {
ans = make_pair(numDiff, len);
result = cur_pos;
}
}
cout << result.fi << " " << result.se;
}
};
int main() {
ios_base::sync_with_stdio(false);cin.tie(nullptr);
cin >> lenS;
cin >> s;
// if (subtask2 :: check()) return subtask2 :: solve(), 0;
subtask5 :: solve();
return 0;
}
/* Discipline - Calm */
# | 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... |