Submission #1230907

#TimeUsernameProblemLanguageResultExecution timeMemory
1230907toast12Lollipop (POI11_liz)C++20
100 / 100
1228 ms22512 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    vector<int> v(n+1);
    for (int i = 1; i <= n; i++) {
        char c;
        cin >> c;
        if (c == 'T') v[i] = 2;
        else v[i] = 1;
    }
    vector<int> ps(n+1);
    for (int i = 1; i <= n; i++) ps[i] = ps[i-1]+v[i];
    vector<int> a(n+2, n+1);
    for (int i = n; i > 0; i--) {
        if (v[i] == 1) a[i] = i;
        else a[i] = a[i+1];
    }
    while (m--) {
        int k;
        cin >> k;
        auto it = lower_bound(ps.begin(), ps.end(), k);
        if (it == ps.end()) {
            cout << "NIE\n";
            continue;
        }
        if (*it == k) {
            cout << 1 << ' ' << (it-ps.begin()) << '\n';
            continue;
        }
        int i = it-ps.begin();
        int l = min(a[1], a[i]-i+1);
        int r = l+i-1;
        if (r > n) cout << "NIE\n";
        else if (ps[r]-ps[l-1] == k) cout << l << ' ' << r << '\n';
        else cout << l+1 << ' ' << r << '\n';
    }
    return 0;
}
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...