Submission #1298157

#TimeUsernameProblemLanguageResultExecution timeMemory
1298157ThunnusArcade (NOI20_arcade)C++20
0 / 100
1 ms580 KiB
#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.fi == rhs.fi ? rhs.se > 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 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...