Submission #1314064

#TimeUsernameProblemLanguageResultExecution timeMemory
1314064cleimek Martian DNA (BOI18_dna)C++20
100 / 100
23 ms2764 KiB
#include <bits/stdc++.h> using namespace std; const int INF = 1e8; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n, k, r; cin >> n >> k >> r; vector<int> arr(n); vector<int> req(k+1,0); int requiredNum = 0; for(int i=0; i<n; ++i) cin >> arr[i]; for(int i=0; i<r; ++i){ int type, num; cin >> type >> num; req[type]=num; requiredNum+=num; } //two-pointers int start = -1; int toObtain = requiredNum; vector<int> obtained(k+1,0); int ans = INF; for(int end = 0; end < n; ++end){ while(start < n-1 && toObtain > 0){ start++; int curr = arr[start]; obtained[curr]++; if(obtained[curr] <= req[curr]) toObtain--; } if(toObtain == 0){ ans = min(ans, start-end+1); } int curr = arr[end]; if(req[curr] != 0 && obtained[curr] == req[curr]) toObtain++; obtained[arr[end]]--; } if(ans == INF) cout << "impossible\n"; else cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...