关于题解代码
查看原帖
关于题解代码
448887
cancan123456楼主2022/8/21 17:51
	int l = 1, r = n;
	while(v[r].cnt == 0) r--;
	while(l < r)
	{
		if(v[1].cnt == 1)break;
		cout<<v[r].id<<' '<<v[l].id<<'\n';
		v[r].cnt--, v[l].cnt--;
		l++;
		if(v[l].cnt <= v[1].cnt && v[1].cnt) l = 1;
		if(!v[r].cnt) r--;
		if(l == r && v[l].cnt)swap(v[l], v[1]), l = 1;
	}
	if(v[1].cnt)
	{
		for(int i = 2; i <= n; i++)
			if(v[i].cnt)
			{
				cout<<v[i].id<<' '<<v[i-1].id<<"\n";
				v[i].cnt--, v[i-1].cnt--;
			}
	}

这一段为什么是正确的?

2022/8/21 17:51
加载中...