Submission #1150240

#TimeUsernameProblemLanguageResultExecution timeMemory
1150240dobri_oke Martian DNA (BOI18_dna)C++20
100 / 100
407 ms27116 KiB
//#pragma GCC target ("avx2") //#pragma GCC optimize ("Ofast") #include <bits/stdc++.h> using namespace std; #define int long long #define F first #define S second #define pb push_back const int N = 1e6+100, NN = 26; const int mod = 1e9+7; //int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a % b); } //int lcm(int a, int b) { return a / gcd(a, b) * b; } //int binpow(int a,int b){if(!b)return 1; if(b&1)return a*binpow(a,b-1)%mod; int x=binpow(a,b/2); return x*x%mod;} signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k, q; cin >> n >> k >> q; int a[n+1]; map < int, int > mp, mp2; for(int i=1;i<=n;i++){ cin >> a[i]; mp[a[i]]++; } bool b=0; for(int i=1;i<=q;i++){ int f, ff; cin >> f >> ff; mp2[f]=ff; if(mp[f]<ff){ b=1; } } if(b==1){ cout << "impossible"; return 0; } mp.clear(); int ans=n; int l=1, r=n; int cnt=0; for(int i=1;i<=n;i++){ mp[a[i]]++; if(mp2[a[i]]!=0){ if(mp[a[i]]>=mp2[a[i]]){ if(mp[a[i]]==mp2[a[i]]) cnt++; bool b2=0; while(l<i){ if(mp2[a[l]]!=0 && mp[a[l]]-mp2[a[l]]<=0) break; else{ mp[a[l]]--; l++; } } } } if(cnt==q) ans=min(ans, i-l+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...