제출 #643509

#제출 시각아이디문제언어결과실행 시간메모리
643509KindaNameless Martian DNA (BOI18_dna)C++14
100 / 100
33 ms3504 KiB
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<numeric>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<stack>
#include<deque>
#include<cmath>
#include<map>
#include<set>
using namespace std;

#define ll long long
#define ld long double

int main(){
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int N, K, R; cin >> N >> K >> R;

    vector<int> need(K), cnt(K), D(N+1);
    for(int i = 1; i <= N; ++i){
        cin >> D[i];
    }

    for(int i = 1; i <= R; ++i){
        int B, Q; cin >> B >> Q;
        need[B] = Q;
    }

    int done = 0;
    for(int i = 0; i < K; ++i){
        if(need[i] == 0)done++;
    }

    int l = 1, r, answer = 1e9;
    for(r = 1; r <= N; ++r){
        cnt[D[r]]++;
        if(cnt[D[r]] == need[D[r]])done++;
        while(l < r && cnt[D[l]] > need[D[l]]){
            cnt[D[l++]]--;
        }
        if(done == K){
            answer = min(answer, r - l + 1);
        }
    }

    if(answer > N)cout << "impossible";
    else cout << answer;

    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...