Submission #686663

#TimeUsernameProblemLanguageResultExecution timeMemory
686663Farhan_HYNivelle (COCI20_nivelle)C++14
110 / 110
182 ms1488 KiB
#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)

nivelle.cpp:17:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   17 | main() {
      | ^~~~
#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...