Submission #1302000

#TimeUsernameProblemLanguageResultExecution timeMemory
1302000h1drogenExam (eJOI20_exam)C++20
0 / 100
1096 ms2900 KiB
#include<bits/stdc++.h> using namespace std; #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #define int long long #define ll long long #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define f first #define s second #define yes cout<<"YES\n" #define no cout<<"NO\n" #define imp cout<<-1<<"\n" #define pb push_back #define pii pair<int,int> #define piii pair<int,pair<int,int>> #define ls v<<1 #define rs v<<1|1 #define fast ios::sync_with_stdio(false);cin.tie(0);cout.tie(0) #define ptree tree * const int mod=1e9+7; const int INF = 1e18; const int N=1e6+50; const int logn=16; void solve(){ int n,q,m,b,c; cin>>n; map<int,int>cnt; vector<int>v(n+1); for(int i=1;i<=n;i++){ cin>>v[i]; } vector<int>g(n+1); for(int i=1;i<=n;i++){ cin>>g[i]; } vector<int>dp(n+1); dp[0]=0; for(int i=1;i<=n;i++){ cnt.clear(); int ans=0; int mx=-1; for(int j=i;j>=1;j--){ if(mx==g[j]){ ans++; } cnt[g[j]]++; if(mx<v[j]){ ans-=cnt[mx]; mx=v[j]; ans+=cnt[mx]; } dp[i]=max(dp[i],ans+dp[j-1]); } } int ans=0; for(int i=1;i<=n;i++){ ans=max(dp[i],ans); } cout<<ans<<"\n"; } signed main(){ fast; int t=1; // cin>>t; while(t--){ solve(); } 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...