最后一个AC,其余WA
#include <iostream>
using namespace std;
typedef struct data {
int id, time;
} process;
int main() {
int line[21][10000] = {0}, m, n;
cin >> m >> n;
int order[m * n];
process processes[21][21];
int step[21] = {0}, res = 0, last_time[21] = {0};
for (int i = 0; i < m * n; ++i) {
cin >> order[i];
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> processes[i][j].time;
}
}
for (int i = 0; i < m * n; ++i) {
int now = order[i] - 1;
int num = step[now]++;
int id = processes[now][num].id;
int cost = processes[now][num].time;
int point = 0;
int index;
index = last_time[now] + 1;
while (1) {
if (line[id][index] == 0) {
point++;
} else {
point = 0;
}
if (point == cost) {
for (int j = index - point + 1; j <= index; ++j) {
line[id][j] = 1;
}
if (index > res) {
res = index;
}
last_time[now] = index;
break;
}
index++;
}
}
cout << res;
}