# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1114649 | adiyer | Gift (IZhO18_nicegift) | C++17 | 2073 ms | 236892 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define adiyer(); ios_base::sync_with_stdio(0); cin.tie(0);
#define all(x) (x.begin(), x.end())
#define pb push_back
// #define int long long
typedef long long ll;
using namespace std;
const int N = 1e6 + 11;
const int mod = 1e9 + 7;
const ll inf = 1e18 + 11;
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
ll n, k;
ll a[N];
set < pair < ll, ll >, greater < pair < ll, ll > > > st;
vector < vector < ll > > ans;
void solve(){
cin >> n >> k;
for(ll i = 1; i <= n; i++) cin >> a[i], st.insert({a[i], i});
while(st.size() >= k){
vector < ll > pos = {1};
vector < pair < ll, ll > > del;
for(auto it : st){
del.pb(it);
pos.pb(it.second);
if(del.size() == k) break;
}
for(auto it : del) st.erase(it);
for(auto it : del) st.insert({it.first - 1, it.second});
while(st.size() && (st.rbegin() -> first) == 0) st.erase(*st.rbegin());
ans.pb(pos);
}
if(st.empty()){
cout << ans.size() << '\n';
for(auto it : ans){
for(ll x : it) cout << x << ' ';
cout << '\n';
}
}
else{
cout << -1;
}
}
const bool Cases = 0;
signed main(){
adiyer();
int CS = 1;
if(Cases) cin >> CS;
while(CS--) solve();
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |