제출 #1127254

#제출 시각아이디문제언어결과실행 시간메모리
1127254Ludissey Martian DNA (BOI18_dna)C++20
100 / 100
51 ms2632 KiB
#include <bits/stdc++.h> #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() using namespace std; vector<int> a; vector<int> req; int n,K,R; bool f(int k){ vector<int> has(K,0); int Nr=0; for (int i = 0; i < k; i++) has[a[i]]++; for (int i = 0; i < K; i++) { if(has[i]>=req[i]) Nr++; } for (int j = k; j < n; j++) { if(Nr==K) return true; if(req[a[j]]==has[a[j]]+1) Nr++; has[a[j]]++; if(req[a[j-k]]==has[a[j-k]]) Nr--; has[a[j-k]]--; } return (Nr==K); } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> K >> R; a.resize(n); req.resize(K,0); for (int i = 0; i < n; i++) cin >> a[i]; for (int i = 0; i < R; i++) { int b,v; cin >> b >> v; req[b]=v; } int l=1; int r=n; int ans=-1; while(l<=r){ int mid=(l+r)/2; if(f(mid)){ ans=mid; r=mid-1; }else{ l=mid+1; } } if(ans==-1) 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...