#include<bits/stdc++.h>
#pragma GCC optimize("unroll-loops,O3")
using namespace std;
using i64 = long long;
#define int i64
#define vi vector<int>
#define vvi vector<vi>
#define vb vector<bool>
#define se second
#define fi first
#define pii pair<int, int>
#define sz(x) (int)(x).size()
inline void solve(){
int n, m;
cin >> n >> m;
vi a(m), t(m);
for(int i = 0; i < m; i++){
cin >> a[i];
}
for(int i = 0; i < m; i++){
cin >> t[i];
}
vector<pii> buttons(m);
for(int i = 0; i < m; i++){
buttons[i] = {t[i] - a[i], t[i] + a[i]}; // t[i] - a[i] -> ileri, t[i] + a[i] -> geri, ileri şartı sağlanıyorsa geri gidemem
}
sort(buttons.begin(), buttons.end(), [&](const pii &lhs, const pii &rhs){return (lhs.se == rhs.se ? lhs.fi > rhs.fi : lhs.se < rhs.se);} );
// LDS kadar gidebiliyorum, count(LDS) = sz(LIS)
vi lis;
for(int i = 0; i < m; i++){
auto it = lower_bound(lis.begin(), lis.end(), buttons[i].fi);
if(it == lis.end()){
lis.emplace_back(buttons[i].fi);
}
else{
*it = buttons[i].fi;
}
}
cout << sz(lis) << "\n";
return;
}
signed main(){
ios_base::sync_with_stdio(false); cin.tie(0);
int t = 1;
//cin >> t;
while(t--){
solve();
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |