제출 #1346961

#제출 시각아이디문제언어결과실행 시간메모리
1346961MMihalevCookies (JOI23_cookies)C++20
0 / 100
1 ms344 KiB
#include<iostream>
#include<set>
#include<vector>
using namespace std;
const int MAX_N=1e5+5;
int n,m;
int a[MAX_N];
int b[MAX_N];

vector<int>boxes[MAX_N];
int main ()
{
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);

    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];
    }
    
    if(m==1)
    {
        int B=b[1];

        if(sum%B!=0)
        {
            cout<<-1<<"\n";
            return 0;
        }

        int cnt=sum/B;

        set<pair<int,int>>s;

        for(int i=1;i<=n;i++)s.insert({a[i],i});

        //cout<<cnt<<"\n";

        int j=0;
        while(s.size())
        {
            j++;
            vector<int>curbox;
            for(auto [sz,type]:s)curbox.push_back(type);
            if(curbox.size()<B)
            {
                cout<<-1<<"\n";
                return 0;
            }

            cout<<B<<" ";
            for(int i=1;i<=B;i++)
            {
                boxes[j].push_back(curbox.back());
                s.erase({a[curbox.back()]--,curbox.back()});
                if(a[curbox.back()])s.insert({a[curbox.back()],curbox.back()});
                curbox.pop_back();
            }
        }

        cout<<cnt<<"\n";
        for(int i=1;i<=cnt;i++)
        {
            cout<<boxes[i].size()<<" ";
            for(int x:boxes[i])cout<<x<<" ";
            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...
#Verdict Execution timeMemoryGrader output
Fetching results...