Submission #1156645

#TimeUsernameProblemLanguageResultExecution timeMemory
1156645the_ZHER Martian DNA (BOI18_dna)C++20
100 / 100
26 ms6332 KiB
#include <bits/stdc++.h> #define boost ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define int long long using namespace std; const int inf=1e17; const int N=2e5+5; const int N1=1e5+5; const int N2=5e6+6; const int mod=1e9+7; const int k1=447; struct edge{ int d,in; }; struct edge1{ int l,r; }; vector<int>v; int dp[N]; int dp1[N]; vector<int>v1; int dp2[N]; signed main(){ boost; int n,k,q; cin>>n>>k>>q; v.push_back(0); for(int i=1;i<=n;i++){ int x; cin>>x; dp[x]++; v.push_back(x); } int ok2=0; int cnt1=0; for(int i=1;i<=q;i++){ int x,cnt; cin>>x>>cnt; dp1[x]=cnt; dp2[x]=1; cnt1++; if(dp[x]<cnt){ ok2=1; } } if(ok2==1){ cout<<"impossible"; return 0; } for(int i=1;i<=n;i++){ dp[v[i]]=0; } int l=1; int ans=n; for(int r=1;r<=n;r++){ dp[v[r]]++; if(dp[v[r]]>=dp1[v[r]]&&dp1[v[r]]!=0&&dp2[v[r]]==1){ cnt1--; dp2[v[r]]=0; } int ok3=0; if(cnt1==0){ ok3=1; } while(cnt1==0&&l<=r){ dp[v[l]]--; if(dp[v[l]]<dp1[v[l]]&&dp1[v[l]]!=0){ cnt1++; dp2[v[l]]=1; } l++; } if(ok3==1){ ans=min(ans,r-(l-1)+1); } } 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...