Submission #390378

# Submission time Handle Problem Language Result Execution time Memory
390378 2021-04-16T00:32:16 Z MilosMilutinovic Exam (eJOI20_exam) C++14
12 / 100
38 ms 1484 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++) {
    bool add = (a[i] == b[i]);  
    map<int, int> cnt;
    int bonus = 0, need = 0;
    bool ok = true;
    for (int j = i - 1; j >= 0; j--) {
      dp[i] = max(dp[i], dp[j]);
      if (a[i] <= a[j]) {
        ok = false;
      }
      if (ok && b[j] == a[i]) {
        bonus++;
      } else {
        if (a[j] == b[j]) {
          need++;
        }
      }
      dp[i] = max(dp[i], (j > 0 ? dp[j - 1] : 0) + bonus + need);        
    }
    if (i > 0) {
      dp[i] = max(dp[i], dp[i - 1]);
    }
    if (add) {
      dp[i] += 1;
    }
  }
  cout << dp[n - 1] << '\n';
  return 0;
}
# 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 Correct 1 ms 204 KB Output is correct
2 Correct 5 ms 460 KB Output is correct
3 Correct 17 ms 1036 KB Output is correct
4 Correct 15 ms 1112 KB Output is correct
5 Correct 28 ms 1100 KB Output is correct
6 Correct 14 ms 1484 KB Output is correct
7 Correct 15 ms 1100 KB Output is correct
8 Correct 24 ms 1100 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Incorrect 1 ms 332 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 38 ms 364 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 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 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -