传送门https://codeforces.com/contest/1635/problem/C
这道题就是找规律,首先想一想为-1的情况:
- a[n-1]>a[n] 这种情况下更本就没得改
- a[n]<0的情况 其实可以发现如果a[n]<0且数组无序,无论如何都不可能好排序,因为想要改变一个数,z一定是正数,但如果a[n]<0,之前所有的数也都要小于0.
AC代码如下:
#include <iostream>
#include<algorithm>
#define int long long
using namespace std;
const int N = 4e5 + 10;
int a[N];
inline void solve() {
int n = 0; cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
if (is_sorted(a + 1, a + 1 + n)) cout << 0 << endl;
else if (a[n] < a[n - 1] || a[n] < 0) cout << -1 << endl;
else {//方案的y,z都用a[n-1],a[n]解决;
cout << n - 2 << endl;
for (int i = 1; i <= n - 2; i++) cout << i << ' ' << n - 1 << ' ' << n << endl;
}
}
signed main() {
int t = 0; cin >> t;
while (t--) solve();
return 0;
}