Submission #1361697

#TimeUsernameProblemLanguageResultExecution timeMemory
1361697Nonoze Martian DNA (BOI18_dna)C++20
100 / 100
16 ms3544 KiB
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define cmax(a,b) a=max(a,b)
#define cmin(a,b) a=min(a,b)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define sz(x) (int)x.size()
// #define int long long

void solve();

signed main() {
	ios::sync_with_stdio(0); cin.tie(0);
	solve();
	return 0;
}



int n, k, q;
vector<int> a, mini;

void solve() {
	cin >> n >> k >> q; int bq=q;
	vector<int> cntocc(k);
	a.resize(n); for (auto &x: a) cin >> x, cntocc[x]++;
	mini.resize(k);
	int cnt=0;
	while (q--) {
		int x, m; cin >> x >> m;
		mini[x]=m;
		if (cntocc[x]<m) {
			cout << "impossible" << endl;
			return;
		}
	}
	int ans=n, pos=-1;
	vector<int> comp(k);
	for (int i=0; i<n; i++) {
		if (i) {
			if (comp[a[i-1]]==mini[a[i-1]]) cnt--;
			comp[a[i-1]]--;
		}
		while (pos+1<n && cnt<bq) {
			pos++;
			comp[a[pos]]++;
			if (comp[a[pos]]==mini[a[pos]]) cnt++;
		}
		if (cnt==bq) cmin(ans, pos-i+1);
	}
	cout << ans << endl;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...