Submission #1150092

#TimeUsernameProblemLanguageResultExecution timeMemory
1150092LinkedArrayArcade (NOI20_arcade)C++20
100 / 100
198 ms13472 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
#define pb push_back

vector<int> t, a;
vector<pair<int, int>> bf, nrm;
set<int> max_cresc;

int main () {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  int n, m, i, b, f, val, idx;

  cin >> n >> m;

  t = vector<int>(m + 1);
  for (i = 1; i <= m; i++) {
    cin >> t[i];
  }

  a = vector<int>(m + 1);
  bf = vector<pair<int, int>>(m + 1);
  for (i = 1; i <= m; i++) {
    cin >> a[i];

    f = t[i] - a[i];
    b = t[i] + a[i];
    bf[i] = make_pair(f, b);
  }
  sort(bf.begin() + 1, bf.end());

  nrm = vector<pair<int, int>>(m + 1);
  for (i = 1; i <= m; i++) {
    val = bf[i].second;
    idx = i;
    nrm[i] = make_pair(val, idx);
  }
  sort(nrm.begin() + 1, nrm.end());

  for (i = 1; i <= m; i++) {
    auto it = max_cresc.lower_bound(nrm[i].second);
    if (it == max_cresc.begin()) {
      max_cresc.insert(nrm[i].second);
      continue;
    }
    max_cresc.erase(prev(it));
    max_cresc.insert(nrm[i].second);
  }

  cout << max_cresc.size() << "\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...
#Verdict Execution timeMemoryGrader output
Fetching results...