萌新求助
查看原帖
萌新求助
247388
WRuperD楼主2021/7/29 17:05
#include<iostream>
using namespace std;
int a[1005];
char b[1005][10];
char d[1005][10];
int c[1005];
int main()
{
	int n, k;
	cin>>n>>k;
	for(int i = 1; i <= n; i++)
	{
		cin>>a[i];
		c[i] = a[i];
	}
	int ans = 0x3f3f3f3f;
	for(int j = 1; j <= n; j++)
	{
		int cnt = 0;
		for(int i = j-1; i >= 1; i--)
		{
			if(a[i+1] - a[i] != k){
				if(a[i+1] - a[i] < k){
					b[++cnt][1] = '-';
					b[cnt][2] = char(i+48);
					b[cnt][3] = char(k - a[i+1] + a[i] + 48);
					
				}
				else{
					b[++cnt][1] = '+';
					b[cnt][2] = char(i+48);
					b[cnt][3] = char(a[i+1] - a[i] - k + 48);
				}
			}
			a[i] = a[i+1] - k;
//			if(a[i] < 0){
//				cnt = 0x3f3f3f3f;
//			}
		}
		for(int i = j+1; i <= n; i++)
		{
			if(a[i] - a[i-1] != k){
				if(a[i] - a[i-1] < k){
					b[++cnt][1] = '+';
					b[cnt][2] = char(i+48);
					b[cnt][3] = char(k - a[i] + a[i-1] + 48);
					
				}
				else{
					b[++cnt][1] = '-';
					b[cnt][2] = char(i+48);
					b[cnt][3] = char(a[i] - a[i-1] - k + 48);
				}
			}
			a[i] = a[i-1] + k;
//			if(a[i] < 0){
//				cnt = 0x3f3f3f3f;
//			}
		}
		for(int i = 1; i <= n; i++)
		{
			a[i] = c[i];
		}
//		cout<<cnt<<endl; 
		ans = min(ans, cnt);
		if(cnt == ans){
			for(int i = 1; i <= ans; i++)
			{
				d[i][1] = b[i][1];
				d[i][2] = b[i][2];
				d[i][3] = b[i][3];
			}
		} 
	}
	cout<<ans<<endl;
	for(int i = 1; i <= ans; i++)
	{
		cout<<d[i][1]<<' '<<d[i][2]<<' '<<d[i][3]<<endl;
	}
	return 0;
}
2021/7/29 17:05
加载中...