제출 #1133331

#제출 시각아이디문제언어결과실행 시간메모리
1133331lopkus Martian DNA (BOI18_dna)C++20
68 / 100
2094 ms15944 KiB
#include <bits/stdc++.h> #define int long long using namespace std; signed main() { ios::sync_with_stdio(false); cin.tie(0); int n, dic, r; cin >> n >> dic >> r; vector<int> a(n + 1); for(int i = 1; i <= n; i++) { cin >> a[i]; } int ans = n + 1; vector<int> p(r + 1); vector<int> k(r + 1); for(int i = 1; i <= r; i++) { cin >> p[i] >> k[i]; } vector<int> pos[n + 1]; vector<int> some(n + 1, 1e9); for(int i = 1; i <= n; i++) { pos[a[i]].push_back(i); } for(int i = 1; i <= r; i++) { some[p[i]] = pos[p[i]].size() - 1; } vector<int> c(n + 1, n + 1); for(int i = n; i >= 1; i--) { c[a[i]] = some[a[i]]--; int ok = 1; int d = 0; for(int j = 1; j <= r; j++) { if(k[j] + c[p[j]] - 1 >= pos[p[j]].size()) { ok = 0; break; } d = max(d, pos[p[j]][k[j] + c[p[j]] - 1]); } if(!ok) { continue; } ans = min(ans, d - i + 1); } if(ans == n + 1) { cout << "impossible"; } else { 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...