제출 #460773

#제출 시각아이디문제언어결과실행 시간메모리
460773Tenis0206Exam (eJOI20_exam)C++11
12 / 100
39 ms4288 KiB
#include <bits/stdc++.h> using namespace std; int n; int a[100005],b[100005],aux[100005],l[100005],r[100005],fr[100005]; bool subtask2() { for(int i=2; i<=n; i++) { if(b[i]!=b[i-1]) { return false; } } return true; } bool subtask4() { for(int i=1; i<=n; i++) { aux[i] = a[i]; } sort(aux+1,aux+n+1); for(int i=2; i<=n; i++) { if(aux[i]==aux[i-1]) { return false; } } return true; } int solve_subtask2() { stack<int> st; for(int i=1; i<=n; i++) { while(!st.empty() && a[i]>a[st.top()]) { st.pop(); } if(st.empty()) { l[i] = 0; } else { l[i] = st.top(); } st.push(i); } while(!st.empty()) { st.pop(); } for(int i=n; i>=1; i--) { while(!st.empty() && a[i]>a[st.top()]) { st.pop(); } if(st.empty()) { r[i] = n+1; } else { r[i] = st.top(); } st.push(i); if(a[i]==b[1]) { ++fr[l[i]+1]; --fr[r[i]]; } } int rez = 0; for(int i=1; i<=n; i++) { fr[i]+=fr[i-1]; if(fr[i]) { ++rez; } } return rez; } int solve_subtask4() { return 0; } int solve_general() { return 0; } int main() { ios::sync_with_stdio(false); cin.tie(0); cin>>n; for(int i=1; i<=n; i++) { cin>>a[i]; } for(int i=1; i<=n; i++) { cin>>b[i]; } if(subtask2()) { cout<<solve_subtask2()<<'\n'; return 0; } if(subtask4()) { cout<<solve_subtask4()<<'\n'; return 0; } cout<<solve_general()<<'\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...