제출 #1290921

#제출 시각아이디문제언어결과실행 시간메모리
1290921al_reem_2010 Martian DNA (BOI18_dna)C++20
100 / 100
41 ms4724 KiB
// اَللَهُمَ صَلِ عَلَىَ مُحَمَدٍ وَ آلِ مُحَمَدٍ //#include "bits/stdc++.h" #include <iostream> #include <vector> #include <string> #include <algorithm> #include <cmath> #include <map> #include <set> #include <queue> #include <thread> #include <fstream> #include <stack> using namespace std ; #define int long long #define pb push_back #define si size() #define fi first #define se second #define all(a) a.begin(),a.end() #define applejuice ios::sync_with_stdio(false) ; cin.tie(nullptr) ; cout.tie(nullptr) ; const int inf=1e18 ; const int mod=1e9+7 ; const int maxn=2*1e5+7 ; int tt=1 ; int a[maxn] , cnt[maxn] , cnt1[maxn] ; void solve() { int n , r , k ; cin >> n >> r >> k ; for(int i=0 ; i<n ; i++) {cin >> a[i] ;} int x , cntt , c=0 ; for(int i=0 ; i<k ; i++) {cin >> x >> cntt ; cnt[x]=cntt ; c+=cnt[x] ;} int s=c , e=n , mid , ans=-1 ; while(s<=e) { mid=(s+e)/2 ; bool A=0 ; for(int i=0 ; i<mid ; i++) {cnt1[a[i]]+=1 ;} int B=0 ; for(int i=0 ; i<r ; i++) {B+=(cnt[i]<=cnt1[i] ? 1 : 0) ;} A=(A|(B==r)) ; //cout << 0 << " " << mid-1 << " " << (A ? 1 : 0) << "\n" ; for(int i=0 ; mid+i<n ; i++) { if(cnt[a[i]]<=cnt1[a[i]] && cnt[a[i]]>cnt1[a[i]]-1) {B-=1 ;} cnt1[a[i]]-=1 ; if(cnt[a[mid+i]]>cnt1[a[mid+i]] && cnt[a[mid+i]]<=cnt1[a[mid+i]]+1) {B+=1 ;} cnt1[a[mid+i]]+=1 ; A=(A|(B==r)) ; //cout << i << " " << mid+i << " " << (A ? 1 : 0) << "\n" ; } if(A) {ans=mid ; e=mid-1 ;} else {s=mid+1 ;} for(int i=0 ; i<r ; i++) {cnt1[i]=0 ;} } if(ans==-1) {cout << "impossible" ; return ;} cout << ans ; } signed main() { //wrong applejuice ; //cin >> tt ; while(tt--) {solve() ;} } /* 5 2 2 0 1 1 0 1 0 1 1 1 2 _______ 13 4 3 1 1 3 2 0 1 2 0 0 0 0 3 1 0 2 2 1 1 2 7 _______ 5 3 1 1 2 0 1 2 0 2 impossible */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...