Submission #1314070

#TimeUsernameProblemLanguageResultExecution timeMemory
1314070amloxg Martian DNA (BOI18_dna)C++20
100 / 100
22 ms2744 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...