#include<bits/stdc++.h>
using namespace std;
struct mod{
int t[21],m[21],a=1;
bool making=false;
};
struct mac{
int d=0;
};
int n,k,p[402][2],sec,pn,pb;
mod id[21];
mac mid[21];
int c[21];
void make(){
for(int i=1;i<=pn;i++){
if(mid[id[p[i][0]].m[p[i][1]]].d==0&&p[i][1]==id[p[i][0]].a&&!id[p[i][0]].making){
mid[id[p[i][0]].m[p[i][1]]].d=p[i][0];id[p[i][0]].making=true;
}
}for(int i=1;i<=n;i++){
if(mid[i].d){
id[mid[i].d].t[id[mid[i].d].a]--;
if(id[mid[i].d].t[id[mid[i].d].a]==0){
id[mid[i].d].a++;
id[mid[i].d].making=false;
mid[i].d=0;
}
}
}for(int i=1;i<=pn;i++){
if(id[p[i][0]].a>p[i][1]){
for(int j=i;j<=pn;j++){
p[j][0]=p[j+1][0];
p[j][1]=p[j+1][1];
}pn--;
}
}
}
int main(){
cin>>n>>k;
pn=n*k;
for(int i=1;i<=n*k;i++){
cin>>p[i][0];
c[p[i][0]]++;
p[i][1]=c[p[i][0]];
}for(int i=1;i<=k;i++){
for(int j=1;j<=n;j++){
cin>>id[i].m[j];
}
}for(int i=1;i<=k;i++){
for(int j=1;j<=n;j++){
cin>>id[i].t[j];
}
}while(pn>0){
make();
sec++;
}cout<<sec;
return 0;
}
求助,其中t是储存零件加工时间,sec是时间,m是用的机器,a是加工到哪里,pb好像是没有用的(忘了),p是计划,pn是计划数量