Submission #519663

#TimeUsernameProblemLanguageResultExecution timeMemory
519663ac2huArcade (NOI20_arcade)C++14
0 / 100
0 ms204 KiB
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 10;
struct mov{
    int t,loc;
} a[N];
int n,m;
signed main(){
	iostream::sync_with_stdio(false);
	cin.tie(nullptr);cout.tie(nullptr);
    cin >> n >> m;
    for(int i = 0;i<m;i++){
        cin >> a[i].t;
    }
    for(int i =0 ;i<m;i++){
        cin >> a[i].loc;
    }
    sort(a,a + m,[&](mov a,mov b){
        return a.t < b.t||(a.t == b.t && a.loc < b.loc);
    });
    vector<int> arms;
    for(int i = 0;i<m;i++){
        pair<int,int> idx = {1e9,-1};
        for(int j = 0;j<(int)arms.size();j++){
            int e = arms[j];
            if(abs(a[e].loc - a[i].loc) <= abs(a[e].t - a[i].t)){
                int v = abs(a[e].t - a[i].t) - abs(a[e].loc - a[i].loc);
                idx = {v,e};
            }
        }
        if(idx.second == -1){
            arms.push_back(i);
        }
        else{
            arms[idx.second] = i;
        }
    }
    cout << arms.size() << "\n";
    // int l = 1,r = m;
    // while(l < r){
    //     int mid = (l + r - 1)/2;
    //     if(check(mid))
    //         r = mid;
    //     else 
    //         l = mid + 1;
    // }
    // cout << l << "\n";
}
#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...