Submission #1312932

#TimeUsernameProblemLanguageResultExecution timeMemory
1312932arman.khachatryanGift (IZhO18_nicegift)C++20
0 / 100
21 ms8216 KiB
#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);
    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});
                a[n-2].first-=sum;
                a[n-3].first-=sum;
                break;
            }
            for(int i=n-3; i>=0; i--){
                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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...