#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
using namespace std;
// using namespace __gnu_pbds;
#define SPEED \
ios_base::sync_with_stdio(0); \
cin.tie(NULL); \
cout.tie(NULL);
#define pb push_back
#define ins insert
#define fi first
#define se second
// #define endl "\n"
#define ALL(x) x.begin(), x.end()
#define sz(x) x.size()
#define intt long long
const intt mod = 1e9 + 7;
const intt base = 31;
const intt inf = 1e9;
const intt mxN = 2e5 + 5;
const intt L = 21;
void solve() {
string S;
cin >> S;
intt Q;
cin >> Q;
vector<pair<intt,intt>> qrys;
for(intt i = 0; i < Q; i++) {
intt a, b;
cin >> a >> b;
qrys.pb({a, b});
}
intt N = S.size();
S = '#' + S;
vector<intt> A(N);
for(intt i = 0; i < N; i++) {
cin >> A[i];
}
intt best = inf, l = 0, r = N;
string temp = S;
while(l <= r) {
intt mid = (l + r) / 2;
// cout << l << " " << mid << " " << r << " ";
for(intt i = 1; i <= mid; i++){
S[A[i-1]] = '*';
}
// cout << S << endl;
vector<vector<intt>> cnt(N+1, vector<intt>(27, 0ll));
for(intt i = 1; i <= N; i++) {
for(intt j = 0; j < 26; j++) {
cnt[i][j] += cnt[i-1][j];
if(S[i] != '*' && (S[i] - 'a') == j) {
// if(j == 1) cout << "ZOR: " << i << " ";
cnt[i][j]++;
// if(j == 1)
// cout << cnt[i][S[i]-'a'] << endl;
}
}
}
// for(intt i = 0; i < N; i++) {
// for(intt j = 0; j < 26; j++) {
// cout << cnt[i][j] << " ";
// }
// cout << endl;
// }
intt olur = 1;
for(intt i = 0; i < Q; i++) {
for(intt j = 0; j < 26; j++) {
intt sag = cnt[qrys[i].se][j], sol = cnt[qrys[i].fi-1][j];
// if(j == 0 || j == 1) {
// cout << sag << " " << sol << " :: " << qrys[i].fi << " " << qrys[i].se << endl;
// }
if(sag - sol <= 1) {
continue;
}
olur = 0;
break;
}
if(!olur) break;
}
if(!olur){
l = mid + 1;
} else {
best = mid;
r = mid - 1;
}
S = temp;
}
cout << best << endl;
}
signed main() {
SPEED;
intt tst = 1;
// cin >> tst;
while (tst--) {
solve();
}
}
# | 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... |
# | 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... |