感觉代码打废了,大佬们有没有什么好的思路,清晰一点的告诉我,我都听着的喵。代码能调的话还是先调了。(洛谷虽然有和这一样名字的题目但内容一点都不一样)

代码:
#include<bits/stdc++.h>
using namespace std;
struct node{
int l[3];
}b[10000010];
int a[7],cnt;
int main(){
for(int i=1;i<=6;i++){
cin>>a[i];
}
for(int i=6;i>=1;i--){
for(int j=1;j<=cnt;j++){
int tmp=0;
if(a[i]==0)
break;
for(int k=0;k<3;k++){
if(6-b[j].l[k]<i){
tmp=1;
break;
}
}
if(!tmp){
for(int k=0;k<3;k++){
b[j].l[k]+=i;
}
a[i]--;
}
}
while(a[i]!=0){
cnt++;
for(int j=0;(j+i<=6)&&a[i]!=0;j+=i){
b[cnt].l[1]=b[cnt].l[2]=b[cnt].l[3]=j;
a[i]--;
}
}
}
return 0;
}