WA了两个点
查看原帖
WA了两个点
194093
天梦楼主2020/9/19 21:21
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<sstream>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<deque>
#include<cstdlib>
#include<ctime>
#define dd double
#define ll long long
#define ull unsigned long long
#define N 21
#define M 100010
using namespace std;

int m,n;
bool jiqiwork[N][M];
int shunxu[N*N];

struct rode{
	int gongxu_jiqi[N];
	int gongxu_shijian[N];
	int last,tail;
};
rode gongjian[N];
int ans;

int Max(int a,int b)
{
	return a>b?a:b;
}

int main()
{
	scanf("%d%d",&m,&n);
	for(int i=1;i<=m*n;i++) scanf("%d",&shunxu[i]);
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=m;j++)
		{
			int x;
			scanf("%d",&x);
			gongjian[i].gongxu_jiqi[j]=x;
		}
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=m;j++)
		{
			int x;
			scanf("%d",&x);
			gongjian[i].gongxu_shijian[j]=x;
		}
	
	for(int i=1;i<=m*n;i++)
	{
		int turn=shunxu[i];
		gongjian[turn].tail++;
		int tail=gongjian[turn].tail;
		int jiqi=gongjian[turn].gongxu_jiqi[tail];
		int shijian=gongjian[turn].gongxu_shijian[tail];
		
		int j;
		for(j=gongjian[turn].last+1;;j++)
		{
			if(!jiqiwork[jiqi][j])
			{
				if(!jiqiwork[jiqi][j+shijian-1])
				{
					for(int k=j;k<=j+shijian-1;k++) jiqiwork[jiqi][k]=1;
					gongjian[turn].last=j+shijian-1;
					break;
				}
				else j=j+shijian-1;
			}
		}
	}
	
	for(int i=1;i<=n;i++) ans=Max(ans,gongjian[i].last);
	printf("%d",ans);
}
2020/9/19 21:21
加载中...