求大佬救救!!!(HELP,为什么一个都过不了!!!)
查看原帖
求大佬救救!!!(HELP,为什么一个都过不了!!!)
551217
GS_MJX楼主2024/7/5 20:35
#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

int n, num[100005], cc = 1;
int len[100005], content[100005];

int main()
{
	cin >> n;
	for(int i = 1; i <= n; i++)	cin >> num[i];
	
	sort(num + 1, num + 1 + n);
	//for(int i = 1; i <= n; i++)	cout << num[i] << endl;
	
	
	len[1]++, content[1] = num[1];
	for(int i = 2; i <= n; i++)
		if(num[i] != num[i - 1])	cc++, content[cc] = num[i], len[cc]++;
		else	len[cc]++;
	
	//for(int i = 1; i <= cc; i++)	cout << "i : " << i << ' ' << len[i] << ' ' << content[i] << endl;
	
	
	
	if(cc % 2)
	{
		cout << -1;
		return 0;
	}
	
	int flag = 0;
	for(int i = 1; i <= cc; i++)
	{
		if(flag == 0 && len[i] % 2 == 0)
		{
			flag = i;
		}
		else if(flag != 0 && len[i] % 2 == 0)
		{
			// count > flag
			if(len[flag] >= len[i])
			{
				for(int j = 1; j <= len[i] / 2; j++)
				{
					cout << content[i] << ' ' << content[flag] << ' ';
					cout << content[i] << ' ' << content[flag] << ' ';
				}
				len[flag] -= len[i];
				len[i] = 0;
			}
			else
			{
				for(int j = 1; j <= len[flag] / 2; j++)
				{
					cout << content[i] << ' ' << content[flag] << ' ';
					cout << content[i] << ' ' << content[flag] << ' ';
				}
				len[i] -= len[flag];
				len[flag] = 0;
				flag = i;
			}
			
			if(len[flag] % 2)
				flag = 0;
		}
	}

	//for(int i = 1; i <= cc; i++)	cout << "i : " << i << ' ' << len[i] << ' ' << content[i] << endl;
	for(int i = 1; i <= n; i++)
		if(len[i])
			cout << content[i] << ' ';

//
//	flag = 0;
//	for(int i = 1; i <= cc; i++)
//	{
//		if(flag == 0 && len[i] % 2)
//		{
//			flag = i;
//		}
//		else if(flag != 0 && len[i] % 2)
//		{
//			// count > flag
//			if(len[flag] >= len[i])
//			{
//				for(int j = 1; j <= len[i]; j++)
//				{
//					cout << content[i] << ' ' << content[flag] << ' ';
//				}
//				len[flag] -= len[i];
//				len[i] = 0;
//			}
//			else
//			{
//				for(int j = 1; j <= len[flag]; j++)
//				{
//					cout << content[i] << ' ' << content[flag] << ' ';
//				}
//				len[i] -= len[flag];
//				len[flag] = 0;
//				flag = i;
//			}
//
//			if(!len[flag] && !len[flag] % 2)
//				flag = 0;	
//		}
//
//	}

	return 0;
}
2024/7/5 20:35
加载中...