Submission #1294130

#TimeUsernameProblemLanguageResultExecution timeMemory
1294130Jawad_Akbar_JJ Martian DNA (BOI18_dna)C++20
100 / 100
77 ms17856 KiB
#include <iostream> #include <set> #include <vector> using namespace std; const int N = 1<<18; vector<int> occ[N]; int id[N], Cur[N], a[N], tm[N]; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n, m, k, Ans = N; cin>>n>>m>>k; for (int i=1;i<=n;i++){ cin>>a[i]; id[i] = occ[a[i]].size(); occ[a[i]].push_back(i); } multiset<int> ms; for (int i=1;i<=k;i++){ int c; cin>>c; cin>>tm[c]; Cur[c] = n + 1; ms.insert(n + 1); } for (int i=n;i>=1;i--){ if (tm[a[i]] == 0) continue; if (id[i] + tm[a[i]] <= occ[a[i]].size()){ ms.erase(ms.find(Cur[a[i]])); Cur[a[i]] = occ[a[i]][id[i] + tm[a[i]] - 1]; ms.insert(Cur[a[i]]); } if (*rbegin(ms) <= n) Ans = min(Ans, *rbegin(ms) - i + 1); } if (Ans == N) cout<<"impossible\n"; else cout<<Ans<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...