PTA | Stolen Shoes
恒太足球俱乐部有n名球员,每名球员编号1∼n。今天早上,更衣室管理员发现一部分球员柜的球鞋被盗。这导致今天的比赛有一部分球员因为没有球鞋而无法出场,幸运的是,有一部分球员还有备用球鞋,但是拥有备用球鞋的球员只会借给和自己号码相邻的球员,比如:5号队员只会借给4号和6号。假如5号球员的球鞋也被盗了,他拥有的备用球鞋则不会借给相邻的队员。
现在,给出上述信息,请你求出,今天的比赛,不能上场参赛的最小人数。
输入格式:
输入的第一行给出三个整数n——表示总人数;m——表示球鞋坏掉的人数;x表示拥有备用球鞋的人数。
输入的第二行给出m个整数a[i]——表示球鞋坏掉的人的编号。
输入的第三行给出x个整数a[i]——表示有备用球鞋的人的编号。
2≤n≤10
2≤m≤n
2≤x≤n
2≤a[i]≤n
输出格式:
输出一个整数——表示不能上场参赛的最小人数。
输入样例:
5 2 3
2 4
1 3 5
输出样例:
0
代码示例:
#include<stdio.h>
int main(){
int n; //总人数
int m; //被盗人数
int x; //备用人数
scanf("%d%d%d",&n,&m,&x);
int nn[11];
int mm[11];
int xx[11];
int num;
for(int i=0;i<m;i++){
scanf("%d",mm+i);
}
for(int i=0;i<x;i++){
scanf("%d",xx+i);
}
for(int i=1;i<=n;i++){ //初始化每个人都有鞋子
nn[i]=1;
}
for(int i=0;i<m;i++){ //有人鞋子被偷了
nn[mm[i]]=0;
}
for(int i=0;i<x;i++){
if(nn[xx[i]]==0){
nn[xx[i]]=1;
continue;
}else{
if(xx[i]>1 && nn[xx[i]-1]==0){
nn[xx[i]-1]=1;
continue;
}
if(xx[i]<n && nn[xx[i]+1]==0){
nn[xx[i]+1]=1;
}
}
}
num=0;
for(int j=1;j<=n;j++){
if(nn[j]==0){
num++;
}
}
printf("%d\n",num);
return 0;
}
PTA | Stolen Shoes
https://acm.nanyan.cc/posts/a984.html