B. Taxi drivers and Lyft
AC代码
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int maxn=200100+5;
int x[maxn],t[maxn];
int ans[maxn];
int main(){
int n,m;
cin>>n>>m;
n+=m;
for(int i=0;i<n;i++) cin>>x[i];
for(int i=0;i<n;i++) cin>>t[i];int lv=-1;
for(int i=0;i<n;i++){
if(!t[i]) ans[i]=lv;
else lv=i;
}/*for(int i=0;i<n;i++)
cout<<ans[i]<<" ";
cout<<endl;
cout<<endl;*/lv=n;
for(int i=n-1;i>=0;i--){
if(!t[i]){
if(ans[i]==-1||(lv!=n&&x[lv]-x[i]<x[i]-x[ans[i]]))
ans[i]=lv;ans[ans[i]]++;
/*for(int i=0;i<n;i++)
cout<<ans[i]<<" ";
cout<<endl;*/
}
else lv=i;
/*for(int i=0;i<n;i++)
cout<<ans[i]<<" ";
cout<<endl;*/
}for(int i=0;i<n;i++)
if(t[i])
cout<<ans[i]<<" ";
cout<<endl;
return 0;
}