제출 #1185453

#제출 시각아이디문제언어결과실행 시간메모리
1185453qrnGrudanje (COCI19_grudanje)C++20
70 / 70
276 ms27256 KiB
#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 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...