제출 #537977

#제출 시각아이디문제언어결과실행 시간메모리
537977thegrimbee Martian DNA (BOI18_dna)C++14
0 / 100
24 ms4052 KiB
#include<bits/stdc++.h> using namespace std; #define int long long bool debug = false; signed main(){ cin.tie(0); ios_base::sync_with_stdio(0); int n, k, r, temp; cin >> n >> k >> r; vector<int> v(n); for (int i = 0 ;i < n; ++i){ cin >> v[i]; } vector<int> val(k, 1e9+7); for (int i = 0;i < r; ++i){ cin >> temp; cin >> val[temp]; } int lo = 1, hi = n, mid = (lo + hi)/2; while (temp!=r && mid != n){ if(debug) cout << mid << '\n'; temp = 0; vector<int> cur(n, 0); for (int i = 0; i < mid; ++i){ cur[v[i]]++; if(cur[v[i]] == val[v[i]])temp++; } if(temp == r){ hi = mid; mid = (lo + hi)/2; continue; } for (int i = mid; i < n; ++i){ cur[v[i]]++; cur[v[i-mid]]--; if (v[i] != v[i-mid]){ if(cur[v[i]] == val[v[i]])temp++; if (cur[v[i-mid]] == val[v[i-mid]]-1)temp--; } if(temp == r){ hi = mid; mid = (lo + hi)/2; continue; } } lo = mid+1; mid = (lo + hi)/2; } if (temp != r && mid == n)cout << "impossible"; else cout << mid; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...