求助P10123 [USACO18OPEN] Milking Order B
  • 板块灌水区
  • 楼主oier25
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/24 15:38
  • 上次更新2024/3/24 17:15:56
查看原帖
求助P10123 [USACO18OPEN] Milking Order B
719233
oier25楼主2024/3/24 15:38

P10123 [USACO18OPEN] Milking Order B

我的代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,k,a[105],b[105],c[105],d[105];
bool f=0;
signed main(){
	//freopen("status.in","r",stdin);
	//freopen("status.out","w",stdout);
	cin>>n>>m>>k;
	for(int i=1;i<=m;i++){
		cin>>a[i];
		b[a[i]]=i;
	}
	for(int i=1;i<=k;i++){
		int x,y;
		cin>>x>>y;
		if(b[x])f=1;
		c[x]=y;
		d[y]=x;
	}
	if(c[1]){
		cout<<c[1]<<"\n";
		return 0;
	}
	if(b[1]){
		for(int i=1;i<=n;i++){
			if(!d[i])b[1]--;
			if(b[1]==0){
				cout<<i<<"\n";
				return 0;
			}
		}
	}
	if(f==0){
		for(int i=1;i<=n;i++){
			if(d[i]==0){
				cout<<i<<"\n";
				return 0;
			}
		}
	}
	b[m+1]=n+1;
	for(int i=m;i>=1;i--){
		if(c[a[i+1]]&&!c[a[i]]){
			int z=c[a[i+1]]-1;
			while(d[z])z--;
			d[z]=a[i];
			c[a[i]]=z;
		}
	}
//	for(int i=1;i<=n;i++){
//		printf("d[%d]=%d\n",i,d[i]);
//	}
	for(int i=1;i<=n;i++){
		if(d[i]==0){
			cout<<i<<"\n";
			return 0;
		}
	}
	return 0;
}

我的记录

2024/3/24 15:38
加载中...