A.声控灯
题目链接-A.声控灯
解题思路
- 当 m = 1 m=1 m=1时,说明只有一层楼,这时小明一定在一楼
- 当 n = 2 n=2 n=2时,不管小明在一楼还是二楼,两层的灯始终是亮着的,所以此时无法判断小明在几楼
- 当
m
=
3
m=3
m=3时,小明一定在中间那个楼层,输出
a[2]
即可 - 当 m = 2 m=2 m=2时,说明是 1 , 2 1,2 1,2层或 n − 1 , n n-1,n n−1,n层亮灯,如果是前者说明小明在第一层,后者则说明小明在第 n − 1 n-1 n−1层,否则就输出 − 1 -1 −1
- 具体操作见代码
附上代码
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<stdio.h>
#include<ctype.h>
inline void read(int &x){
char t=getchar();
while(!isdigit(t)) t=getchar();
for(x=t^48,t=getchar();isdigit(t);t=getchar()) x=x*10+(t^48);
}
int a[10];
int main(){
int t;
read(t);
while(t--){
int n,m;
read(n);read(m);
for(int i=1;i<=m;i++)
read(a[i]);
if(m==1) printf("1\n");
else if(n==2) printf("-1\n");
else if(m==3) printf("%d\n",a[2]);
else if(m==2&&a[1]==1) printf("1\n");
else if(m==2&&a[2]==n) printf("%d\n",n);
else printf("-1\n");
}
return 0;
}