#include <bits/stdc++.h>
using namespace std;
struct node{
int a, b, val;
};
int main() {
int n, k;
cin>>n>>k;
pair<int, int> a[n];
for(int i=0; i<n; i++){
cin>>a[i].first;
a[i].second=i+1;
}
sort(a, a+n, [&](pair<int, int> x, pair<int, int> y){
return x.first<y.first;
});
int sum=0;
for(int i=0; i<n-1; i++){
sum+=a[i].first;
}
if(sum<a[n-1].first || (sum+a[n-1].first)%2==1){
cout<<-1;
}else{
sum-=a[n-1].first;
vector<node> v;
while(sum>0){
if(sum>=2*a[n-3].first){
sum-=2*a[n-3].first;
v.push_back({a[n-2].second, a[n-3].second, a[n-3].first});
a[n-2].first-=a[n-3].first;
a[n-3].first=0;
}else{
v.push_back({a[n-2].second, a[n-3].second, sum/2});
a[n-2].first-=sum/2;
a[n-3].first-=sum/2;
break;
}
for(int i=n-3; i>0; i--){
swap(a[i], a[i-1]);
}
for(int i=n-2; i>0; i--){
if(a[i].first>=a[i-1].first){
break;
}
swap(a[i], a[i-1]);
}
}
for(int i=0; i<n-1; i++){
if(a[i].first>0){
cout<<a[i].first<<" "<<a[i].second<<" "<<a[n-1].second<<'\n';
}
}
for(auto& it : v){
cout<<it.val<<" "<<it.a<<" "<<it.b<<'\n';
}
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |