제출 #1132558

#제출 시각아이디문제언어결과실행 시간메모리
1132558codexistent Martian DNA (BOI18_dna)C++20
100 / 100
98 ms17544 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define MAXNRK 200005 #define FOR(i, a, b) for(ll i = a; i <= b; i++) #define f first #define s second ll n, k, r, b[MAXNRK], tidx[MAXNRK], rq[MAXNRK]; vector<ll> toc[MAXNRK]; stack<ll> st; ll ans = LLONG_MAX; void printans(){ if(ans == LLONG_MAX) cout << "impossible" << endl; else cout << ans << endl; } int main(){ cin >> n >> k >> r; FOR(i, 1, n) { cin >> b[i]; toc[b[i]].push_back(i); rq[i - 1] = 0, tidx[i - 1] = -1; if(i <= k) st.push(i - 1); } FOR(i, 1, r){ ll x; cin >> x; cin >> rq[x]; } ll i2 = 0; FOR(i, 1, n){ while(st.size()){ ll sti = st.top(); st.pop(); while(rq[sti] > 0){ if(tidx[sti] + 1 >= toc[sti].size()){ printans(); return 0; } rq[sti]--; tidx[sti]++; i2 = max(i2, toc[sti][tidx[sti]]); } } ans = min(ans, 1 + i2 - i); rq[b[i]]++; st.push(b[i]); } printans(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...