제출 #90653

#제출 시각아이디문제언어결과실행 시간메모리
90653adletGift (IZhO18_nicegift)C++17
0 / 100
6 ms3840 KiB
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>

#define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout)

using namespace std;

typedef long long ll;

const int N = 2e5 + 5;
const int mod = 1e9 + 7;
const double PI = acos(-1.0);

struct item {
    int x, i, j;
};

vector < item > ans;

pair < int, int > a[N];

int n, k, mx;

ll sum;

int main() {
    cin >> n >> k;
    for (int i = 1; i <= n; ++i) {
        cin >> a[i].first;
        sum += a[i].first;
        mx = max(mx, a[i].first);
        a[i].second = i;
    }
    sort(a + 1, a + n + 1);
    if (sum % k != 0 || mx > sum / k) {
        cout << -1;
        return 0;
    }
    for (int i = 1; i <= n; ++i) {
        if (!a[i].first)
            continue;
        for (int j = n; j > i; --j) {
            if (!a[i].first)
                break;
            if (!a[j].first)
                continue;
            ans.push_back({1, a[i].second, a[j].second});
            --a[i].first;
            --a[j].first;
        }
    }
    cout << ans.size() << "\n";
    for (auto it : ans) {
        cout << it.x << " " << it.i << " " << it.j << "\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...