这题还是挺有意思的 可以用异或运算符判断是否说的是假话
#include <bits/stdc++.h>
using namespace std;
int main(){
int N,A[105];
cin>>N;
for (int i = 1; i <= N ; ++i) {
cin>>A[i];
}
for (int i = 1; i <=N ; ++i) {
for (int j = i+1; j <=N ; ++j) {
int a=0,b=0;
for (int k = 1; k <=N ; ++k) {
if ((abs(A[k])==i or abs(A[k])==j)^A[k]<0 ) {//说的是假话
a++;
if (k==i or k==j)//是狼人并且说的是假话
b++;
}
}
if (a==2 and b==1) {
printf("%d %d", i, j);
return 0;
}
}
}
printf("No Solution");
return 0;
}