Submission #674918

#TimeUsernameProblemLanguageResultExecution timeMemory
674918stevancvArcade (NOI20_arcade)C++14
100 / 100
198 ms18444 KiB
#include <bits/stdc++.h> #define ll long long #define ld long double #define sp ' ' #define en '\n' #define smin(a, b) a = min(a, b) #define smax(a, b) a = max(a, b) using namespace std; const int N = 3e5 + 2; const int mod = 1e9 + 7; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, m; cin >> m >> 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]; vector<int> c(n); iota(c.begin(), c.end(), 0); sort(c.begin(), c.end(), [&] (int i, int j) { if (a[i] + b[i] != a[j] + b[j]) return a[i] + b[i] < a[j] + b[j]; return b[i] - a[i] > b[j] - a[j]; }); vector<int> v; for (int i : c) v.push_back(b[i] - a[i]); vector<int> lis(n + 1, 2e9 + 1); lis[0] *= -1; int sol = 0; for (int i = 0; i < n; i++) { int l = 1, r = i, ans = 1; while (l <= r) { int mid = l + r >> 1; if (lis[mid] < v[i]) { l = mid + 1; ans = mid + 1; } else r = mid - 1; } smin(lis[ans], v[i]); smax(sol, ans); } cout << sol << en; return 0; }

Compilation message (stderr)

Arcade.cpp: In function 'int main()':
Arcade.cpp:34:25: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   34 |             int mid = l + r >> 1;
      |                       ~~^~~
#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...