Submission #1049242

#TimeUsernameProblemLanguageResultExecution timeMemory
1049242marExam (eJOI20_exam)C++14
14 / 100
7 ms604 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 100008;
 
ll dp[maxn];
 
int main() {
    int n; cin>>n;
    int ans=0;
	vector<int> a, b;
	bool flag = true;
	int inp;
	for(int i=0;i<n;i++) {
		cin>>inp; 
		a.push_back(inp);
		if(i>0 && inp <= a[i-1]) flag=false;
	}
	
	for(int i=0;i<n;i++){
	    cin>>inp;
	    b.push_back(inp);
	} 
	
	if(!flag) {
	    vector<int> v;
	    map<int, int> idx;
    	for(int i=0; i<n; i++) idx[a[i]] = i;
    	for(int i=0; i<n; i++) {
    		if(idx.count(b[i]) && i <= idx[b[i]]) v.push_back(b[i]);
    	}
    	
    	ll mx = 0;
    	ll sz = v.size();
    	for (int i=0; i<sz; i++) {
    		for(int j=0; j<i; j++) {
    			if(v[i] >= v[j]) { 
    				dp[i] = max(dp[i], dp[j]+1);
    			}
    		}
    	}
    	for(int i=0; i<sz; i++) {
    		mx = max(mx,dp[i]);
    	}
    	cout<<mx+1<<endl;
		return 0;
	}
	
	for(int i=0; i<n; i++) {
		if(a[i] != inp)continue;
		int tmp = i-1;
		while(tmp >= 0 && a[tmp] <= inp) {
			ans++;
			tmp--;
		}
		while(i < n && a[i] <= inp) {
			ans++;
			i++;
		}
	}
	cout<<ans<<endl;
    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...