Submission #1333221

#TimeUsernameProblemLanguageResultExecution timeMemory
1333221tomthuy123 Martian DNA (BOI18_dna)C++20
0 / 100
19 ms3140 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll MOD = 1e9 + 7;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n,k,r;
    cin >> n >> k >> r;
    vector<ll> lst(n+1);
    vector<ll> Occurences(k);
    vector<ll> Requirement(k,-1);
    for(ll i=1;i<=n;i++){
        cin >> lst[i];
        Occurences[lst[i]]++;
    }
    ll ye=0;
    for(ll i=0;i<r;i++){
        ll b,q;
        cin >> b >> q;
        Requirement[b]=q;
        if(Requirement[b]>Occurences[b]){
            ye=1;
        }
    }
    ll L=1;
    ll R=n;
    while(L<R){
        ll Change=0;
        //cout << lst[L] << " ";
        if(L<R){
            if(Occurences[lst[L]]-1>=Requirement[lst[L]]){
                Occurences[lst[L]]--;
                L++;
                Change=1;

            }
        }
        //cout << lst[R]  << " " << Occurences[0] << "\n";
        if(L<R){
            if(Occurences[lst[R]]-1>=Requirement[lst[R]]){
                Occurences[lst[R]]--;
                R--;
                Change=1;
            }
        }
        if(Change==0) break;
    }
    //cout << L << " " << R << "\n";
    if(ye==1){
        cout << "impossible" << "\n";
        return 0;
    }
    cout << R-L+1;
    
    
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...