Submission #495309

#TimeUsernameProblemLanguageResultExecution timeMemory
495309IerusGift (IZhO18_nicegift)C++17
30 / 100
2095 ms352208 KiB
#include<bits/stdc++.h> /* #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; */ using namespace std; #pragma GCC optimize ("unroll-loops,Ofast,O3") #pragma GCC target("avx,avx2,fma") #define F first #define S second #define int long long #define sz(x) (int)x.size() #define pb push_back #define eb emplace_back #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define NFS ios_base::sync_with_stdio(0) , cin.tie(0) , cout.tie(0) ; #define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout) //#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> typedef long long ll; const int E = 1e6+777; const long long inf = 1e18+777; const int N = 1e5+777; const int MOD = 1e9+7; int n, k, a[E], sum; vector<vector<int>> res; priority_queue<pair<int,int>> pq; signed main(){auto solve=[&](){ cin >> n >> k; for(int i = 1; i <= n; ++i){ cin >> a[i]; sum += a[i]; if(a[i] > 0){ pq.push({a[i], i}); } } bool ok = (sum % k == 0); for(int i = 1; i <= n; ++i){ if(a[i] > sum / k) ok = false; } if(!ok){ cout << -1; return; } while(sz(pq)){ vector<pair<int,int>> c; vector<int> r; for(int i = 0; i < k; ++i){ c.pb(pq.top()); pq.pop(); --c[i].F; r.pb(c[i].S); } for(int i = 0; i < k; ++i){ if(c[i].F > 0){ pq.push(c[i]); } } res.pb(r); } cout << sz(res) << '\n'; for(auto v : res){ cout << 1 << ' '; for(auto it : v) cout << it << ' '; cout << '\n'; } };NFS;solve();}
#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...