#include <iostream>
#include <vector>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int dna_length, alphabet_size, reqs_num;
cin >> dna_length >> alphabet_size >> reqs_num;
vector<int> dna(dna_length);
for (auto &nucleobase : dna) cin >> nucleobase;
vector<int> reqs(alphabet_size, 0);
for (int req = 0; req < reqs_num; ++req){
int nucleobase, quantity;
cin >> nucleobase >> quantity;
reqs[nucleobase] = quantity;
}
int C = reqs_num;
int res = 1e9;
vector<int> cnt(alphabet_size, 0);
int head = -1;
for (int tail = 0; tail < dna_length; ++tail){
while(head+1 < dna_length && C > 0){
head++;
cnt[dna[head]]++;
if (cnt[dna[head]] == reqs[dna[head]]) C--;
}
if (C <= 0) res = min(res, head-tail+1);
if (cnt[dna[tail]] == reqs[dna[tail]]) C++;
cnt[dna[tail]]--;
}
if (res == 1e9) cout << "impossible\n";
else cout << res << '\n';
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |