80求hack:e

#include<bits/stdc++.h>
using namespace std;
#define int long long

vector<int>a,ans;
int x,y,z;

struct node{
	int num,idx;
}arr[4];
bool cmp1(node x,node y){return x.num<y.num;}
void solve() {
	cin>>x>>y>>z;
	a.resize(x+y+z+1);
	ans.resize(x+y+z+1);
	for(int i=1;i<=x+y+z;i++) cin>>a[i];
	arr[1].num=x,arr[1].idx=1;
	arr[2].num=y,arr[2].idx=2;
	arr[3].num=z,arr[3].idx=3;
	sort(arr+1,arr+4,cmp1);
	vector<int>n(4);
	n[1]=arr[1].num,n[2]=arr[2].num,n[3]=arr[3].num;

	
	for(int i=1;i<=x+y+z;i++){
		if(a[i]==arr[1].idx){
			if(n[3]){n[3]--;ans[i]=arr[3].idx;}
			else if(n[2])n[2]--,ans[i]=arr[2].idx;
			else n[1]--,ans[i]=arr[1].idx;
		}
		
		if(a[i]==arr[2].idx){
			if(n[3]){n[3]--;ans[i]=arr[3].idx;}
			else if(n[1])n[1]--,ans[i]=arr[1].idx;
			else n[2]--,ans[i]=arr[2].idx;
		}
		if(a[i]==arr[3].idx){
			if(n[2]){n[2]--;ans[i]=arr[2].idx;}
			else if(n[1]){n[1]--;ans[i]=arr[1].idx;}
			else n[3]--,ans[i]=arr[3].idx;
		}
	}	
	

	for(int i=1;i<=x+y+z;i++){cout<<ans[i]<<" \n"[i==x+y+z];}
}
signed main() {
//	std::ios::sync_with_stdio(0);
//	std::cin.tie(0);
	int T = 1;
	//cin >> T;
	while (T--) {
		solve();
	}
}

🤮🤮

全部评论
2 2 2 1 2 3 2 3 1 这个代码样例 1 都没通过,多让有诸葛亮摸了一张牌(
点赞 回复 分享
发布于 04-28 01:37 黑龙江

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务