Submission #1294682

#TimeUsernameProblemLanguageResultExecution timeMemory
1294682kirakosyan Martian DNA (BOI18_dna)C++20
100 / 100
58 ms16516 KiB
#include<iostream> #include<vector> #include<algorithm> #include<string> #include<cmath> #include<set> #include<map> #include<queue> #include<stack> #include<unordered_map> #include<unordered_set> using namespace std; using ll = long long; int mod = 1e9 + 7; int gcd(int a, int b) { if (b != 0) { return gcd(b, a % b); } else return a; } int lcm(int a, int b) { return a * b / gcd(a, b); } int pv(int a, int b) { if (b == 0)return 1; int res = pv(a, b / 2) % mod; if (b % 2 == 1) { return ((res * res) % mod * a) % mod; } else return (res * res) % mod; } void solve() { int n, k, r; cin >> n >> k >> r; vector<int>v(n), qan(k + 1, 1e9); for (int i = 0; i < n; i++) { cin >> v[i]; } for (int i = 0; i < r; i++) { int u, x; cin >> u >> x; qan[u] = x; } vector<vector<int>>gp(k+1); set<int>st; int cnt = 0, ans = 1e9; for (int i = 0; i < n; i++) { gp[v[i]].push_back(i); if (gp[v[i]].size() == qan[v[i]])cnt++; if (gp[v[i]].size() >= qan[v[i]]) { if (gp[v[i]].size() > qan[v[i]])st.erase(gp[v[i]][gp[v[i]].size() - qan[v[i]] - 1]); st.insert(gp[v[i]][gp[v[i]].size() - qan[v[i]]]); } if (cnt == r) { /* cout << "APER " << i << endl; for (int x : st) { cout << x << " "; } cout << endl;*/ int mx = 0; if (st.size())mx = *st.begin(); ans = min(ans, i - mx + 1); } } if (ans == 1e9)cout << "impossible" << endl; else cout << ans << endl; } signed main() { ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); 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...