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
作者
nanyan
发布于
2023年10月20日
许可协议