Submission #844715

# Submission time Handle Problem Language Result Execution time Memory
844715 2023-09-05T17:59:15 Z vjudge1 Nivelle (COCI20_nivelle) C++17
110 / 110
12 ms 900 KB
#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;
}


void solve()
{
    int n;
    string s;
    cin >> n >> s;

    int ans_distin = 26, ansl = -1, ansr = -1;

    vector<int> last(26, -1), in_order(26 + 1, -1);
    for (int i = 0; i < n; i++) {
        int c = s[i] - 'a';
        in_order.erase(find(in_order.begin(), in_order.end(), last[c]));
        last[c] = i;
        in_order.insert(in_order.begin(), i);

        for (int j = 1; j <= 26; j++)
            if ((ld)ans_distin /  (ld)(ansr - ansl + 1) > (ld) j / (ld) (i - in_order[j])) {
                ans_distin = j;
                ansl = in_order[j] + 1;
                ansr = i;
            }
    }

    //cout << (ld)ans_distin /  (ansr - ansl + 1) << ' ';
    cout << ansl + 1 << " " << ansr + 1 << "\n";
}

int main()
{
    fio;
    //int t; cin >> t; while(t--)
    {
        solve();
    }
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 344 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 600 KB Output is correct
2 Correct 10 ms 600 KB Output is correct
3 Correct 10 ms 600 KB Output is correct
4 Correct 10 ms 600 KB Output is correct
5 Correct 11 ms 748 KB Output is correct
6 Correct 11 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 600 KB Output is correct
2 Correct 11 ms 600 KB Output is correct
3 Correct 12 ms 900 KB Output is correct
4 Correct 11 ms 600 KB Output is correct
5 Correct 11 ms 764 KB Output is correct
6 Correct 11 ms 600 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 600 KB Output is correct
2 Correct 11 ms 776 KB Output is correct
3 Correct 11 ms 604 KB Output is correct
4 Correct 11 ms 768 KB Output is correct
5 Correct 11 ms 600 KB Output is correct
6 Correct 11 ms 720 KB Output is correct