#pragma GCC optimize("Ofast,O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include<bits/stdc++.h>
#define int long long
#define F first
#define S second
#define pb push_back
#define popp pop_back
#define in insert
#define endl "\n"
#define mid (l+r)/2
using namespace std;
const int N=505;
int n,A[N],m,b[N];
int32_t main(){
ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
cin>>n;
int sum=0;
for(int i=1;i<=n;i++) cin>>A[i],sum+=A[i];
cin>>m;
for(int i=1;i<=m;i++) cin>>b[i];
set<pair<int,int>> s;
for(int i=1;i<=n;i++) s.in({A[i],i});
vector<vector<int>> v;
bool can=bool(sum%b[1]==0);
while(s.size()){
vector<int> cur;
if(s.size()<b[1]){
can=0;
break ;
}
int need=b[1];
vector<pair<int,int>> putback;
while(need){
--need;
pair<int,int> x=*prev(s.end());
cur.pb(x.S);
s.erase(x);
x.F--;
if(x.F!=0) putback.pb(x);
}
for(auto u : putback) s.in(u);
v.pb(cur);
}
if(!can) cout<<-1;
else{
cout<<v.size()<<endl;
for(int i=0;i<v.size();i++){
cout<<1<<' ';
for(auto u : v[i]) cout<<u<<' ';
cout<<endl;
}
}
return 0;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |