Submission #1133247

#TimeUsernameProblemLanguageResultExecution timeMemory
1133247JelalTkmGift (IZhO18_nicegift)C++20
7 / 100
1284 ms589824 KiB
#include <bits/stdc++.h>
#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")

using namespace std;

#define int long long int

const int N = 3e5 + 10;
const int md = 1e9 + 7;
const int INF = 1e18;

int32_t main(int32_t argc, char *argv[]) {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  
  int T = 1;
  // cin >> T;
  while (T--) {
    int n, k, sm = 0;
    cin >> n >> k;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
      cin >> a[i];
      sm += a[i];
    }

    if (k == 2) {
      if (sm & 1) {
        cout << -1 << '\n';
        continue;
      }
      set<pair<int, int>> s;
      for (int i = 0; i < n; i++)
        s.insert({a[i], i + 1});
      vector<pair<int, pair<int, int>>> ans;
      while (true) {
        auto it = s.end(), it1 = s.end();
        it--, it--, it1--;
        if (!((*it).first) && !((*it1).first)) {
          break;
        }
        auto pr = *it, pr1 = *it1;
        int mn = min(pr.first, pr1.first);
        ans.push_back({mn, {pr.second, pr1.second}});
        s.erase(it), s.erase(it1);
        s.insert({pr.first - mn, pr.second});
        s.insert({pr1.first - mn, pr1.second});
      }
      cout << (int) ans.size() << '\n';
      for (auto i : ans)
        cout << i.first << " " << i.second.first << " " << i.second.second << '\n';
    }
  }

  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...