#include <bits/stdc++.h>
using namespace std;
signed main(){
	int n, k, r; cin >> n >> k >> r;
	
	vector <int> d(n);
	
	for ( auto &u: d ) cin >> u;
	
	vector <int> b(r), q(r);
	
	for ( int i = 0; i < r; i++ ){
		cin >> b[i] >> q[i];
	}
	
	vector <vector<int>> p(k);
	vector <int> it(k, -1);
	
	for ( int i = 0; i < n; i++ ) p[d[i]].push_back(i);
	
	int mx = 0;
	
	for ( int i = 0; i < r; i++ ){
		int j = b[i];
		
		if ( (int)p[j].size() < q[i] ) return cout << "impossible\n", 0;
		
		it[j] = q[i] - 1; 
		mx = max(mx, p[j][it[j]]);
	}
	
	int opt = mx + 1;
	
	for ( int i = 0; i < n; i++ ){
		int j = d[i];
		
		if ( it[j] != -1 ){
			if ( ++it[j] == (int)p[j].size() ) break;
			
			mx = max(mx, p[j][it[j]]);
		}
		
		opt = min(opt, mx - i);
	}
	
	cout << opt << '\n';
}
| # | 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... |