Submission #1222455

#TimeUsernameProblemLanguageResultExecution timeMemory
1222455Robert_juniorExam (eJOI20_exam)C++20
14 / 100
1096 ms3128 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define all(x) x.begin(), x.end() #define ins insert #define pb push_back #define F first #define S second const int N = 2e5+4, M = 5e5 + 7; const int mod = 1e9 + 7; int a[N], b[N], c[N], pf[N], sf[N]; pair<int, int>sf1[N]; void solve(){ int n; cin>>n; for(int i = 1; i <= n; i++){ cin>>a[i]; c[i] = a[i];} for(int i = 1; i <= n; i++) cin>>b[i]; sort(c + 1, c + n + 1); for(int i = 1; i <= n; i++){ if(c[i] == c[i - 1]) continue; for(int j = 1; j <= n; j++){ if(a[j] != c[i]) continue; int l = j - 1, r = j + 1; while(l >= 1 && a[l] < a[j]) l--; l++; while(r <= n && a[r] < a[j]) r++; r--; if(a[r + 1] == c[i]){ pf[j] = 0; sf[r + 1] = 0; sf1[r + 1] = {0, r + 1}; for(int k = j; k <= r; k++){ if(k != j) pf[k] = pf[k - 1]; if(b[k] == c[i]) pf[k]++; else if(a[k] == b[k]) pf[k]--; } for(int k = r + 1; k > j; k--){ if(k != r + 1) sf[k] = sf[k + 1], sf1[k] = sf1[k + 1]; if(b[k] == c[i]) sf[k]++; else if(b[k] == a[k]) sf[k]--; if(sf[k] > sf1[k].F){ sf1[k] = {sf[k], k}; } } int mx = 0, l1 = j, r1 = r + 1; for(int k = j; k <= r; k++){ if(pf[k] + sf1[k + 1].F - sf[r + 1] - pf[j] > mx){ mx = pf[k] + sf1[k + 1].F - sf[r + 1] - pf[j]; l1 = k; r1 = sf1[k + 1].S; } } for(int k = j; k <= l1; k++){ a[k] = c[i]; } for(int k = r + 1; k >= r1; k--){ a[k] = c[i]; } } else{ pf[j] = 0; for(int k = j; k <= r; k++){ if(k != j) pf[k] = pf[k - 1]; if(b[k] == c[i]) pf[k]++; else if(a[k] == b[k]) pf[k]--; } int mx = 0, l1 = j; for(int k = j; k <= r; k++){ if(pf[k] - pf[j] > mx){ mx = pf[k] - pf[j]; l1 = k; } } for(int k = j; k <= l1; k++){ a[k] = c[i]; } } if(a[l - 1] != c[i]){ sf[j] = 0; for(int k = j; k >= l; k--){ if(k != j) sf[k] = sf[k + 1]; if(b[k] == c[i]) sf[k]++; else if(a[k] == b[k]) sf[k]--; } int mx = 0, l1 = j; for(int k = j; k >= l; k--){ if(sf[k] - sf[j] > mx){ mx = sf[k] - sf[j]; l1 = k; } } for(int k = l1; k <= j; k++){ a[k] = c[i]; } } } } int ans = 0; for(int i = 1; i <= n; i++) if(a[i] == b[i]) ans++; //for(int i = 1; i <= n; i++) cout<<a[i]<<' '; cout<<ans<<'\n'; } main(){ ios_base :: sync_with_stdio(false); cin.tie(nullptr); int t = 1; //cin>>t; for(int i = 1; i <= t; i++){ //cout<<"Case "<<i<<": "; solve(); } }

Compilation message (stderr)

exam.cpp:103:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
  103 | main(){
      | ^~~~
#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...