记录编号 |
404394 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2006]作业调度方案 |
最终得分 |
100 |
用户昵称 |
YPZ_979 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.005 s |
提交时间 |
2017-05-13 13:11:05 |
内存使用 |
0.93 MiB |
显示代码纯文本
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<vector>
#include<cstdio>
#include<stack>
#include<queue>
#include<cmath>
#include<ctime>
#include<set>
#include<map>
#define ll long long
#define rep(i,a,b) for(register int i=a;i<=b;i++)
#define inf 1<<29
#define re register
using namespace std;
const int N=20;
struct NODE{
int t,id;
}a[N][N];
int jq[N][N*N*N],n,m;
int order[N*N],lst[N];
int P[N];
inline int gi() {
re int ret=0;char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') ret=ret*10+ch-'0',ch=getchar();
return ret;
}
inline void Input() {
m=gi(),n=gi();
rep(i,1,n*m) order[i]=gi();
rep(i,1,n)
rep(j,1,m)
a[i][j].id=gi();
rep(i,1,n)
rep(j,1,m)
a[i][j].t=gi();
}
int ans=0;
inline void work(int now,int p) {
int id=a[now][p].id,tt=a[now][p].t;
int i=lst[now];// the time begin
int cnt=0;
while(1) {
cnt=0;
while(jq[id][i]) i++;
int u=i;
while(!jq[id][i]&&cnt<tt) cnt++,i++;
if(cnt==tt) {
for(re int v=u;v<=i-1;v++) jq[id][v]=1;
lst[now]=i;
ans=max(ans,i);
return;
}
}
}
int main() {
freopen("jsp.in","r",stdin);
freopen("jsp.out","w",stdout);
Input();
rep(i,1,n*m) {
work(order[i],++P[order[i]]);
}
cout<<ans;
return 0;
}