Submission #927135

# Submission time Handle Problem Language Result Execution time Memory
927135 2024-02-14T09:57:45 Z vjudge1 Martian DNA (BOI18_dna) C++17
68 / 100
2000 ms 615624 KB
#include <bits/stdc++.h>

using namespace std;

#define all(a) a.begin(),a.end()
#define pb push_back
#define vt vector
#define endl '\n'
typedef long long ll;

const ll mod=1e9+7;
const ll inf=1e9+7;
const int N=4e5+4;

int n,k,r;
int a[N];
map<int,int>mp,cur;
set<int>st[N];
multiset<int>mst;

void solve(){
	cin>>n>>k>>r;
	for(int i=1; i<=n; ++i){
		cin>>a[i];
	}
	ll all=0;
	for(int i=1; i<=r; ++i){
		int tp,cn;
		cin>>tp>>cn;
		mp[tp]=cn;
		for(int x=0; x<cn; ++x) {
			mst.insert(tp);
			++all;
//			if(all>n){
		//		cout<<"impossible\n";
	//			return;
			//}
		}
	}
	int l=0,r=0;
	int ans=inf;
	while(1){
		if(l==r && r==n) break;
		//cout<<l<<' '<<r<<endl;
		//cout<<mst.size()<<endl;
		while(r+1<=n && mst.size()){
			++r;
			auto pos=mst.find(a[r]);
			cur[a[r]]++;
			//cout<<a[r]<<"  "<<cur[a[r]]<<endl;
			if(pos!=mst.end()) mst.erase(pos);
		}
		if(r==n && mst.size()) {
			break;
		}
		ans=min(ans,r-l);
		while(l+1<=r){
			while(l+1<=r && mp[a[l+1]]==0) ++l;
			ans=min(ans,r-l);
			if(l+1>r) break; 
			++l;
			cur[a[l]]--;
			//cout<<a[l]<<' '<<cur[a[l]]<<endl;
		//	return;
			if(cur[a[l]]<mp[a[l]]) {
				mst.insert(a[l]);
				break;
			}
			ans=min(ans,r-l);
		}
	}
	if(ans==inf){
		cout<<"impossible\n";
		return;
	}
	cout<<ans<<endl;
}
			
int main(){
	int tt=1;
	//cin>>tt;
	while(tt--) {
		solve();
	}
}
# Verdict Execution time Memory Grader output
1 Correct 4 ms 19036 KB Output is correct
2 Correct 4 ms 19036 KB Output is correct
3 Correct 4 ms 19036 KB Output is correct
4 Correct 4 ms 19036 KB Output is correct
5 Correct 4 ms 19036 KB Output is correct
6 Correct 4 ms 19036 KB Output is correct
7 Correct 4 ms 19036 KB Output is correct
8 Correct 4 ms 19036 KB Output is correct
9 Correct 4 ms 19036 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 19032 KB Output is correct
2 Correct 5 ms 19292 KB Output is correct
3 Correct 5 ms 19292 KB Output is correct
4 Correct 6 ms 19548 KB Output is correct
5 Correct 6 ms 19288 KB Output is correct
6 Correct 4 ms 19036 KB Output is correct
7 Correct 3 ms 19036 KB Output is correct
8 Correct 4 ms 19036 KB Output is correct
9 Correct 4 ms 19036 KB Output is correct
10 Correct 4 ms 19032 KB Output is correct
11 Correct 4 ms 19036 KB Output is correct
12 Correct 4 ms 19036 KB Output is correct
13 Correct 4 ms 19036 KB Output is correct
14 Correct 4 ms 19036 KB Output is correct
15 Correct 5 ms 19036 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 47 ms 24156 KB Output is correct
2 Correct 40 ms 22096 KB Output is correct
3 Correct 37 ms 19804 KB Output is correct
4 Correct 44 ms 22620 KB Output is correct
5 Correct 119 ms 27480 KB Output is correct
6 Correct 69 ms 29268 KB Output is correct
7 Correct 38 ms 20056 KB Output is correct
8 Correct 161 ms 34552 KB Output is correct
9 Correct 70 ms 20548 KB Output is correct
10 Correct 46 ms 23304 KB Output is correct
11 Correct 4 ms 19036 KB Output is correct
12 Correct 5 ms 19292 KB Output is correct
13 Correct 5 ms 19288 KB Output is correct
14 Correct 6 ms 19548 KB Output is correct
15 Correct 5 ms 19292 KB Output is correct
16 Correct 4 ms 19036 KB Output is correct
17 Correct 4 ms 19032 KB Output is correct
18 Correct 4 ms 19032 KB Output is correct
19 Correct 5 ms 19036 KB Output is correct
20 Correct 4 ms 19036 KB Output is correct
21 Correct 4 ms 19056 KB Output is correct
22 Correct 4 ms 19036 KB Output is correct
23 Correct 4 ms 19036 KB Output is correct
24 Correct 4 ms 19036 KB Output is correct
25 Correct 4 ms 19036 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 242 ms 27608 KB Output is correct
2 Correct 201 ms 25428 KB Output is correct
3 Correct 145 ms 25424 KB Output is correct
4 Correct 33 ms 19932 KB Output is correct
5 Execution timed out 2090 ms 615624 KB Time limit exceeded
6 Halted 0 ms 0 KB -