记录编号 |
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;
- }