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>
using namespace std;
int nbPiles,nbPossi,valNouv;
vector<int> possi;
vector<vector<int>> pb;
vector<int> etatDeb;
vector<vector<int>> calc(vector<int> etat) {
int fini=1;
for (int i:etat) {
if (i<0) {
return pb;
}
if (i>0) {
fini=0;
}
}
if (fini==1) {
return {};
}
vector<vector<int>> rep=pb,prop;
vector<pair<int,int>> valTri;
for (int i=0;i<nbPiles;i++) {
valTri.push_back({-etat[i],i});
}
sort(valTri.begin(),valTri.end());
for (int i:possi) {
for (int j=0;j<i;j++) {
etat[valTri[j].second]--;
}
prop=calc(etat);
if (prop!=pb and (rep==pb or prop.size()<rep.size())) {
rep=prop;
rep.push_back({});
for (int j=0;j<i;j++) {
rep.back().push_back(valTri[j].second+1);
}
}
for (int j=0;j<i;j++) {
etat[valTri[j].second]++;
}
}
return rep;
}
void afficher(vector<vector<int>> v) {
if (v==pb) {
cout<<-1<<endl;
return ;
}
cout<<v.size()<<"\n";
for (auto u:v) {
cout<<u.size()<<" ";
for (auto i:u) {
cout<<i<<" ";
}
cout<<"\n";
}
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
pb={{-1}};
cin>>nbPiles;
for (int i=0;i<nbPiles;i++) {
cin>>valNouv;
etatDeb.push_back(valNouv);
}
cin>>nbPossi;
for (int i=0;i<nbPossi;i++) {
cin>>valNouv;
possi.push_back(valNouv);
}
afficher(calc(etatDeb));
}
# | 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... |