4 solutions

  • 1
    @ 2026-6-9 17:51:07

    //发题解啦,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;
    

    }

    Information

    ID
    1594
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    7
    Tags
    (None)
    # Submissions
    84
    Accepted
    20
    Uploaded By