Submission #1133249

#TimeUsernameProblemLanguageResultExecution timeMemory
1133249JelalTkmGift (IZhO18_nicegift)C++20
18 / 100
140 ms22692 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; cin >> n >> k; vector<int> a(n); map<int, int> mp; for (int i = 0; i < n; i++) { cin >> a[i]; mp[a[i]]++; } if (k == 2 && (int) mp.size() != 1) { multiset<pair<int, int>> s; for (int i = 0; i < n; i++) s.insert({a[i], i + 1}); bool ok = 0; vector<pair<int, pair<int, int>>> ans; while (true) { auto it = s.end(), it1 = s.end(); it--, it--, it1--; if (!((*it).first) xor !((*it1).first)) break; if (!((*it).first) && !((*it1).first)) { ok = 1; break; } auto pr = *it, pr1 = *it1; ans.push_back({1ll, {pr.second, pr1.second}}); s.erase(it), s.erase(it1); s.insert({pr.first - 1ll, pr.second}); s.insert({pr1.first - 1ll, pr1.second}); } if (ok) { cout << (int) ans.size() << '\n'; for (auto i : ans) cout << i.first << " " << i.second.first << " " << i.second.second << '\n'; } else { cout << -1 << '\n'; } } else if (mp.size() == 1) { if (n % k) cout << -1 << '\n'; else { cout << (n / k) << '\n'; for (int i = 0; i < n; i += k) { cout << a[i] << " "; for (int j = i; j < i + k; j++) cout << j + 1 << " "; cout << '\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...