제출 #1123371

#제출 시각아이디문제언어결과실행 시간메모리
1123371Xiaoyang Martian DNA (BOI18_dna)C++17
100 / 100
34 ms5076 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ld long double #define show(x,y) cout << y << " " << #x << endl; #define show2(x,y,i,j) cout << y << " " << #x << " " << j << " " << #i << endl; #define show3(x,y,i,j,p,q) cout << y << " " << #x << " " << j << " " << #i << " " << q << " " << #p << endl; #define show4(x,y) for(auto it:x) cout << it << " "; cout << #y << endl; typedef pair<int,int>pii; typedef pair<pii,int>pi2; void solve(){ int n,k,r; cin >> n >> k >> r; int arr[n]; for(int x=0;x<n;x++){ cin >> arr[x]; } int need[n]; memset(need,-1,sizeof(need)); int temp,temp2; for(int x=0;x<r;x++){ cin >> temp >> temp2; need[temp]=temp2; } int l=0; int done=0; int cnt[n]; memset(cnt,0,sizeof(cnt)); int best=LONG_LONG_MAX; for(int x=0;x<n;x++){ //include x int val=arr[x]; cnt[val]++; if(cnt[val]==need[val]) done++; while(done==r){ best=min(best,x-l+1); int cur=arr[l]; if(cnt[cur]==need[cur]) done--; cnt[cur]--; l++; } } if(best==LONG_LONG_MAX){ cout << "impossible\n"; } else cout << best; } int32_t main(){ ios::sync_with_stdio(0); cin.tie(0); int t=1; //cin >> t; while(t--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...