MLE求助
查看原帖
MLE求助
787888
Channel_Choo楼主2023/7/14 08:40
#include <iostream>
#include <algorithm>
using namespace std;
int *H, n;
unsigned long long tot = 0;
string s[10000000];
void work2(int *A, int *B, int A_num, int B_num){
	if (A_num == 0 && B_num == 0)
	{
		return ;
	}
	int maxx = -1, maxp;
	int *a, *b;
	a = new int[n + 10];
	b = new int[n + 10];
	char ch;
	for (int i = 1;i <= A_num;i++) {
		if (A[i] > maxx)
		{
			maxx = A[i];
			maxp = i;
			ch = 'A';
		}
	}
	for (int i = 1;i <= B_num;i++) {
		if (B[i] > maxx)
		{
			maxx = B[i];
			maxp = i;
			ch = 'B';
		}
	}
	int sum = 0, num = 0;
	if (ch == 'A'){
		reverse(B + 1, B + B_num + 1);
		int i;
		for (int j = maxp + 1;j <= A_num;j++)
		{
			a[j - maxp] = A[j];
			sum++;
		}
		for (i = 1;i <= B_num;i++)
		{
			b[i] = B[i];
			num++;
		}
		for (int j = maxp - 1;j >= 1;j--)
		{
			b[i + j + 1 - maxp] = A[j];
			s[tot] = "A B";
			num++;
			tot++;
		}
		s[tot] = "A C";
		tot++;
	}
	else if (ch == 'B'){
		reverse(A + 1, A + A_num + 1);
		int i;
		for (int j = maxp + 1;j <= B_num;j++)
		{
			b[j - maxp] = B[j];
			num++;
		}
		for (i = 1;i <= A_num;i++)
		{
			a[i] = A[i];
			sum++;
		}
		for (int j = maxp - 1;j >= 1;j--)
		{
			a[i + j + 1 - maxp] = B[j];
			s[tot] = "B A";
			sum++;
			tot++;
		}
		s[tot] = "B C";
		tot++;
	}
	reverse(a + 1, a + sum + 1);
	reverse(b + 1, b + num + 1);
	work2(a, b, sum, num);
}
void work(int *a){
	int *b, *c;
	b = new int[n + 10];
	c = new int[n + 10];
	int maxx = -1, maxp;
	for (int i = 1;i <= n;i++){
		if (maxx < a[i])
		{
			maxx = a[i];
			maxp = i;
		}
	}
	int sum = 0, num = 0;
	for (int i = 1;i < maxp;i++){
		s[tot] = "A B";
		b[i] = a[i];
		sum++;
		tot++;
	}
	s[tot] = "A C";
	tot++;         
	for (int i = maxp + 1;i <= n;i++){
		c[i - maxp] = a[i];
		num++;
	}
	reverse(b + 1, b + sum + 1);
	reverse(c + 1, c + num + 1);
	work2(c, b, num, sum);
}
int main(){
	
	cin >> n;
	H = new int[n + 10];
	for (int i = 1;i <= n;i++){
		cin >> H[i];
	}
	work(H);
	cout << tot << endl;
	for (int i = 0;i < tot;i++)
	{
		cout << s[i] << endl;
	}
	return 0;
}

2023/7/14 08:40
加载中...