题解
2023-04-30 13:18:07
发布于:上海
23阅读
0回复
0点赞
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 30;
const int maxv = 1e6;
int mach[maxn][maxv];
int a[maxn][maxn];
int cost[maxn][maxn];
int last[maxn];
int step[maxn];
int list[maxv];
int n, m;
int main() {
int ans = 0;
cin >> m >> n;
for(int i = 1; i <= n * m; i++)
cin >> list[i];
for(int i = 1; i <= n;i++)
for(int j = 1; j <= m; j++)
cin >> a[i][j];
for(int i = 1; i <= n;i++)
for(int j = 1; j <= m; j++)
cin >> cost[i][j];
for(int i = 1; i <= n * m; i++) {
int now = list[i];
step[now]++;
int id = a[now][step[now]];
int time = cost[now][step[now]];
int sum = 0;
for(int j = last[now] + 1; ; j++) {
if(mach[id][j] == 0)
sum++;
else
sum = 0;
if(sum == time) {
for(int k = j - sum + 1; k <= j; k++)
mach[id][k] = true;
last[now] = j;
ans = max(ans, j);
break;
}
}
}
cout << ans << endl;
return 0;
}
这里空空如也
有帮助,赞一个