Submission #1220233

#TimeUsernameProblemLanguageResultExecution timeMemory
1220233Younis_DwaiCookies (JOI23_cookies)C++20
7 / 100
4 ms1156 KiB
#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;cur.clear();
          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<<b[1]<<' ';
             for(auto u : v[i]) cout<<u<<' ';
             cout<<endl;
         }
    }
    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...
#Verdict Execution timeMemoryGrader output
Fetching results...