Submission #162909

#TimeUsernameProblemLanguageResultExecution timeMemory
162909mrboorgerGift (IZhO18_nicegift)C++17
0 / 100
306 ms60992 KiB
//#pragma GCC optimize("Ofast") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx") #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <bits/stdc++.h> #define pb push_back #define F first #define S second #define ll long long #define ull unsigned long long #define ld long double #define sqr(x) (x) * (x) using namespace std; using namespace __gnu_pbds; int main() { #ifdef LOCAL freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif // LOCAL ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; vector <pair <ll, int>> a; ll sum = 0; for(int i = 0; i < n; ++i) { int x; cin >> x; sum += x; if (x > 0) a.pb({x, i}); } if (sum % k > 0) { cout << -1; return 0; } vector <pair <ll, vector <int>>> ans; vector <int> cl; sort(a.rbegin(), a.rend()); while(int(a.size()) >= k) { ll z = a.back().F; ans.pb({z, cl}); for(int i = int(a.size()) - 1; i >= int(a.size()) - k; --i) { ans.back().S.pb(a[i].S); a[i].F -= z; } while(!a.empty() && a.back().F == 0) a.pop_back(); } if (!a.empty()) { cout << -1; } else { cout << int(ans.size()) << '\n'; for(int i = 0; i < int(ans.size()); ++i) { cout << ans[i].F << ' '; for(int j = 0; j < k; ++j) cout << ans[i].S[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...