4 solutions
-
0
Guest MOD
-
1
//发题解啦,50%见谅
#include<bits/stdc++.h>
using namespace std;
struct node{
int x,t;}; int main(){
int n,m; cin>>n>>m; vector<node> v(n+m+5); for(int i=1;i<=n+m;i++) cin>>v[i].x; for(int i=1;i<=n+m;i++) cin>>v[i].t; vector<int> c(m+5),u(n+5); int cn1=0,cn2=0; for(int i=1;i<=n+m;i++){ if(v[i].t==1) c[++cn1]=v[i].x; else u[++cn2]=v[i].x; } vector<int> arr(m+3); for(int i=1;i<=n;i++){ int minn=1,minx=INT_MAX; for(int j=1;j<=m;j++){ if(abs(u[i]-c[j])<=minx){ if(abs(u[i]-c[j])==minx){ if(j<minn){ minx=abs(u[i]-c[j]); minn=j; } } else if(abs(u[i]-c[j])<minx){ minx=abs(u[i]-c[j]); minn=j; } } } arr[minn]++; } for(int i=1;i<=m;i++){ cout<<arr[i]<<" "; } return 0;}
-
-2
#define int long long #define endl '\n' using namespace std; int n,m,r[1000000],x; vector<int> a,b; int c[100000]; signed main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); cin>>n>>m; for(int i=1;i<=n+m;i++){ cin>>r[i]; } for(int i=1;i<=n+m;i++){ cin>>x; if(x==0)b.push_back(r[i]); else a.push_back(r[i]); } for(int i=0;i<n;i++){ int p=lower_bound(a.begin(),a.end(),b[i])-a.begin(); int h=-1; int u=100000000000; if(p>0){ int d=b[i]-a[p-1]; if(d<u){ u=d; h=p-1; } } if(p<m){ int d=a[p]-b[i]; if(d<u){ u=d; h=p; } } c[h]++; } for(int i=0;i<m;i++){ cout<<c[i]<<" "; } return 0; }
- 1
Information
- ID
- 1594
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 7
- Tags
- (None)
- # Submissions
- 84
- Accepted
- 20
- Uploaded By