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(){
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++){
if(d[i]==0){
cout<<i<<"\n";
return 0;
}
}
return 0;
}
我的记录