Submission #498983

#TimeUsernameProblemLanguageResultExecution timeMemory
498983inksamuraiGrudanje (COCI19_grudanje)C++17
70 / 70
314 ms18584 KiB
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define sz(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define rep(i,n) for(int i=0;i<n;i++)
#define crep(i,x,n) for(int i=x;i<n;i++)
#define drep(i,n) for(int i=n-1;i>=0;i--)
#define vec(...) vector<__VA_ARGS__>
#define _3qplfh5 ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
typedef long double ld;
using pii=pair<int,int>;
using vi=vector<int>;
using vll=vector<long long>;

int main(){
_3qplfh5;
	string s;
	cin>>s;
	int n=sz(s);
	int q;
	cin>>q;
	vec(pii) qry;
	rep(_,q){
		int l,r;
		cin>>l>>r;
		l--,r--;
		qry.pb({l,r});
	}
	vi per(n);
	rep(i,n){
		cin>>per[i];
		per[i]--;
	}
	auto f=[&](int l){
		vec(vi) cnt(n,vi(30));
		string nes=s;
		rep(i,l+1){
			nes[per[i]]='.';
		}
		rep(i,n){
			if(i) cnt[i]=cnt[i-1];
			if(nes[i]!='.'){
				cnt[i][nes[i]-'a']++;
			}
		}
		rep(_,sz(qry)){
			int _l,_r;
			_l=qry[_].fi;
			_r=qry[_].se;
			rep(j,26){
				if(cnt[_r][j]-(_l==0?0:cnt[_l-1][j])>1){
					return false;
				}	
			}
		}
		return true;
	};
	// f(1);
	int l=-1,r=n-1,c=0;
	while(l<=r){
		int m=(l+r)>>1;
		if(f(m)){
			c=m+1;
			r=m-1;
		}else{
			l=m+1;
		}
	}
	cout<<c<<"\n";
//	
	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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...