Submission #1212086

#TimeUsernameProblemLanguageResultExecution timeMemory
1212086raphaelpGrudanje (COCI19_grudanje)C++20
70 / 70
56 ms1728 KiB
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int N, Q;
    string S;
    cin >> S;
    N = S.size();
    cin >> Q;
    vector<pair<int, int>> Tab;
    for (int i = 0; i < Q; i++)
    {
        int a, b;
        cin >> a >> b;
        Tab.push_back({a, b});
    }
    sort(Tab.begin(), Tab.end());
    vector<int> perm(N);
    for (int i = 0; i < N; i++)
    {
        int x;
        cin >> x;
        perm[x - 1] = i + 1;
    }
    vector<pair<int, int>> big(26), sec(26);
    int buff = 0, ans = 0;
    for (int i = 0; i < Q; i++)
    {
        while (buff < Tab[i].second)
        {
            int x = S[buff] - 'a';
            if (sec[x].second < Tab[i].first)
                sec[x] = {0, 0};
            if (big[x].second < Tab[i].first)
                big[x] = sec[x], sec[x] = {0, 0};
            if (perm[buff] > sec[x].first)
                sec[x] = {perm[buff], buff + 1};
            if (sec[x].first > big[x].first)
                swap(sec[x], big[x]);
            ans = max(ans, sec[x].first);
            buff++;
        }
    }
    cout << ans;
}
#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...