제출 #385452

#제출 시각아이디문제언어결과실행 시간메모리
385452vanicGift (IZhO18_nicegift)C++14
7 / 100
818 ms99008 KiB
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <set> #include <stack> #include <map> #include <queue> #include <vector> #include <cstring> #include <array> #include <bitset> using namespace std; typedef long long ll; const int maxn=1e6+5; ll a[maxn]; set < ll > s; set < pair < ll, int > > s1; vector < vector < ll > > q; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; ll sum=0; s.insert(0); for(int i=0; i<n; i++){ cin >> a[i]; sum+=a[i]; s.insert(a[i]); s1.insert({a[i], i}); } if(sum%k){ cout << -1 << '\n'; return 0; } ll val; set < pair < ll, int > >::iterator it; vector < ll > v; vector < pair < ll, int > > ins; set < ll >::iterator it1; while(!s1.empty()){ if((int)s1.size()==k){ it=s1.begin(); val=it->first; v.push_back(val); for(int i=0; i<k; i++){ v.push_back(it->second+1); if(val!=it->first){ cout << -1 << '\n'; return 0; } it++; } s1.clear(); } else{ it=--s1.end(); for(int i=0; i<k; i++){ it--; } val=it->first; it1=s.lower_bound(val); it1--; val=*it1; it++; val=it->first-val; v.push_back(val); it=--s1.end(); for(int i=0; i<k; i++){ v.push_back(it->second+1); it--; } it=--s1.end(); for(int i=0; i<k; i++){ ins.push_back({it->first-val, it->second}); it=s1.erase(it); it--; } for(int i=0; i<k; i++){ if(ins[i].first){ s1.insert(ins[i]); } } ins.clear(); } q.push_back(v); v.clear(); } cout << q.size() << '\n'; for(int i=0; i<(int)q.size(); i++){ for(int j=0; j<(int)q[i].size(); j++){ cout << q[i][j] << ' '; } 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...