记录编号 404394 评测结果 AAAAAAAAAA
题目名称 [NOIP 2006]作业调度方案 最终得分 100
用户昵称 GravatarYPZ_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;
}