Submission #554966

#TimeUsernameProblemLanguageResultExecution timeMemory
554966ItamarExam (eJOI20_exam)C++14
0 / 100
6 ms468 KiB
#include <map> #include <iostream> using namespace std; #include <vector> #include <queue> #include <set> #include <algorithm> #define ll long long #define vi vector<int> #define vll vector<ll> #define pi pair<int,int> #define pll pair<ll,ll> const int siz = 1e5; int a[siz]; int b[siz]; int solve(int i, int j) { int n = j - i + 1; vi dp(n + 1, 1e9 + 1); dp[0] = 0; int max = 0; for (int t = 0; t < n; t++) { int x = b[t + i]; if (x > 1e9) continue; auto it = lower_bound(dp.begin(), dp.end(), x); *it = x; if (max < it - dp.begin()) { max = it - dp.begin(); } } return max; } int main() { int n; cin >> n; set<int> s; for (int i = 0; i < n; i++) { int x; cin >> x; a[i] = x; s.insert(x); } for (int i = 0; i < n; i++) { int x; cin >> x; b[i] = x; if (b[i] < a[i] || s.find(x) == s.end()) b[i] = 2e9 - i; } int sum = 0; int last = 0; for (int i = 1; i < n; i++) { if (a[i] < a[i - 1]) { sum += solve(last, i - 1); last = i; } } sum+=solve(last, n - 1); cout << sum; }
#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...