제출 #80729

#제출 시각아이디문제언어결과실행 시간메모리
80729inomGift (IZhO18_nicegift)C++14
18 / 100
2064 ms137100 KiB
#include <bits/stdc++.h>
 
#define fi first
#define se second
#define pb push_back
#define sz(c) (int)(c).size()
#define all(c) (c).begin(), (c).end()
#define in freopen("input.txt", "r", stdin);
#define out freopen("output.txt", "w", stdout);

using namespace std;
  
const int N = 2 * 1e5 + 10;
const int MOD = 1e9 + 7;
const int INF = 1e9;

int TN = 1;

int n, k;
set<pair<int, int>> st;
vector<vector<int>> ans;

void solve() {
    cin >> n >> k;
    for (int i = 1; i <= n; i++) {
        int x; cin >> x; st.insert({-x, i});
    }
    while (!st.empty()) {
        if (sz(st) == 1) {
            cout << -1 << "\n"; return;
        }
        auto a = *st.begin(); st.erase(st.begin());
        auto b = *st.begin(); st.erase(st.begin());
        if (a.fi != -1) {
            st.insert({a.fi + 1, a.se});
        }
        if (b.fi != -1) {
            st.insert({b.fi + 1, b.se});
        }
        vector<int> cur; cur.pb(1); cur.pb(a.se); cur.pb(b.se);
        ans.pb(cur);
    }
    
    cout << sz(ans) << "\n";
    for (auto i: ans) {
        for (auto j: i) {
            cout << j << " ";
        }
        cout << endl;
    }
    return;
}

signed main() {
    // ios_base::sync_with_stdio(0);
    // in; out;  // cin >> TN;
    while (TN--) solve();
    return 0;
 }
#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...