记录编号 404394 评测结果 AAAAAAAAAA
题目名称 [NOIP 2006]作业调度方案 最终得分 100
用户昵称 GravatarYPZ_979 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2017-05-13 13:11:05 内存使用 0.93 MiB
显示代码纯文本
  1. #include<algorithm>
  2. #include<iostream>
  3. #include<iomanip>
  4. #include<cstdlib>
  5. #include<cstring>
  6. #include<vector>
  7. #include<cstdio>
  8. #include<stack>
  9. #include<queue>
  10. #include<cmath>
  11. #include<ctime>
  12. #include<set>
  13. #include<map>
  14. #define ll long long
  15. #define rep(i,a,b) for(register int i=a;i<=b;i++)
  16. #define inf 1<<29
  17. #define re register
  18. using namespace std;
  19. const int N=20;
  20. struct NODE{
  21. int t,id;
  22. }a[N][N];
  23. int jq[N][N*N*N],n,m;
  24. int order[N*N],lst[N];
  25. int P[N];
  26. inline int gi() {
  27. re int ret=0;char ch=getchar();
  28. while(ch<'0'||ch>'9') ch=getchar();
  29. while(ch>='0'&&ch<='9') ret=ret*10+ch-'0',ch=getchar();
  30. return ret;
  31. }
  32. inline void Input() {
  33. m=gi(),n=gi();
  34. rep(i,1,n*m) order[i]=gi();
  35. rep(i,1,n)
  36. rep(j,1,m)
  37. a[i][j].id=gi();
  38. rep(i,1,n)
  39. rep(j,1,m)
  40. a[i][j].t=gi();
  41. }
  42. int ans=0;
  43. inline void work(int now,int p) {
  44. int id=a[now][p].id,tt=a[now][p].t;
  45. int i=lst[now];// the time begin
  46. int cnt=0;
  47. while(1) {
  48. cnt=0;
  49. while(jq[id][i]) i++;
  50. int u=i;
  51. while(!jq[id][i]&&cnt<tt) cnt++,i++;
  52. if(cnt==tt) {
  53. for(re int v=u;v<=i-1;v++) jq[id][v]=1;
  54. lst[now]=i;
  55. ans=max(ans,i);
  56. return;
  57. }
  58. }
  59. }
  60. int main() {
  61. freopen("jsp.in","r",stdin);
  62. freopen("jsp.out","w",stdout);
  63. Input();
  64. rep(i,1,n*m) {
  65. work(order[i],++P[order[i]]);
  66. }
  67. cout<<ans;
  68. return 0;
  69. }