21 solutions

  • 0
    @ 2026-6-3 17:31:59
    //J123
    #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;
    }
    

    Information

    ID
    1324
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    (None)
    # Submissions
    252
    Accepted
    128
    Uploaded By