답안 #390377

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
390377 2021-04-16T00:29:54 Z MilosMilutinovic Exam (eJOI20_exam) C++14
12 / 100
31 ms 1496 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;
    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++;
      }
      dp[i] = max(dp[i], (j > 0 ? dp[j - 1] : 0) + bonus);        
    }
    if (i > 0) {
      dp[i] = max(dp[i], dp[i - 1]);
    }
    if (add) {
      dp[i] += 1;
    }
  }
  cout << dp[n - 1] << '\n';
  return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 6 ms 460 KB Output is correct
3 Correct 17 ms 1036 KB Output is correct
4 Correct 13 ms 1108 KB Output is correct
5 Correct 26 ms 1100 KB Output is correct
6 Correct 14 ms 1496 KB Output is correct
7 Correct 15 ms 1228 KB Output is correct
8 Correct 23 ms 1112 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 31 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -