Submission #390505

# Submission time Handle Problem Language Result Execution time Memory
390505 2021-04-16T08:27:59 Z MilosMilutinovic Exam (eJOI20_exam) C++14
12 / 100
63 ms 1640 KB
/**
 *    author:  milos
 *    created: 16.04.2021 02:05:22       
**/
#include <bits/stdc++.h>
 
using namespace std;
 
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n;
  cin >> n;
  vector<int> a(n), b(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < n; i++) {
    cin >> b[i];
  }
  bool same = true;
  for (int i = 0; i < n; i++) {
    if (b[i] != b[0]) {
      same = false;
    }
  }
  if (same) {
    vector<int> pos;
    for (int i = 0; i < n; i++) {
      if (a[i] == b[i]) {
        pos.push_back(i);
      }
    }
    for (int i : pos) {
      for (int j = i + 1; j < n; j++) {
        if (a[j] >= b[j]) {
          break; 
        }
        a[j] = a[i];
      }
      for (int j = i - 1; j >= 0; j--) {
        if (a[j] >= b[j]) {
          break; 
        }
        a[j] = a[i];
      }
    }
    int cnt = 0;
    for (int i = 0; i < n; i++) {
      if (a[i] == b[i]) {
        cnt++;
      }
    }
    cout << cnt << '\n';
    return 0;
  }
  vector<int> dp(n);
  for (int i = 0; i < n; i++) {
    if (i > 0) {
      dp[i] = dp[i - 1];
    }
    int add = 0;
    for (int j = i - 1; j >= 0; j--) {
      if (a[j] > a[i]) {
        dp[i] = max(dp[i], dp[j] + add);
        continue;
      }      
      int fk = 0;
      if (j > 0) fk = dp[j - 1];
      if (a[i] == b[j]) {
        add++;  
      }
      dp[i] = max(dp[i], fk + add);
    }
    int mx = a[i];
    map<int, int> cnt;
    cnt[b[i]] += 1;
    for (int j = i - 1; j >= 0; j--) {
      mx = max(mx, a[j]);
      if (mx == a[j]) {
        dp[i] = max(dp[i], dp[j] + cnt[a[j]]);       
      } else {
        break;
      }
      cnt[b[j]] += 1;
    }
    if (a[i] == b[i]) {
      dp[i]++;
    }
  }
  cout << dp[n - 1] << '\n';
  return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Incorrect 1 ms 204 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 5 ms 588 KB Output is correct
3 Correct 17 ms 1100 KB Output is correct
4 Correct 14 ms 1252 KB Output is correct
5 Correct 27 ms 1220 KB Output is correct
6 Correct 14 ms 1640 KB Output is correct
7 Correct 15 ms 1252 KB Output is correct
8 Correct 24 ms 1228 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 63 ms 412 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Incorrect 1 ms 204 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Incorrect 1 ms 204 KB Output isn't correct
3 Halted 0 ms 0 KB -