#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
string s[n];
int vis[n];
for(int i=0;i<n;i++){
cin>>s[i];
vis[i] = (s[i][0] == '!');
}
for(int i=0;i<n;i++){
if(vis[i] == 0){
for(int j=0;j<n;j++){
if(s[j][0] != '!' && s[i].substr(1) == s[j]){
cout << s[i].substr(1) << endl;
return 0;
}
}
}
}
cout << "satisfiable" << endl;
return 0;
}
下面是题目: 【题目描述】 月球上的小 K 在玩一个游戏:她有若干个不同的命题,每一个命题都是一个仅含小写字母的字符串。 她还有若干个陈述,每一个陈述都指出某一个命题的正确与否。现在,她想知道这些陈述是否产生了矛 盾,你可以帮帮她吗? 具体的,每一个陈述形如 S或者!S ,其中 S是一个仅含小写字母的字符串。 S代表命题 S正确, 而!S 代表命题 S错误。 【输入格式】
第一行,一个数n 表示陈述的个数。 接下来n 行,每行一个仅含小写字母的字符串,代表一个命题。 【输出格式】 如果陈述没有矛盾,则输出 satisfiable 。 否则输出产生矛盾,且指出其正确的陈述最早出现的命题。 【样例输入】 6 !d a !a b !c d 【样例输出】 a 【数据规模】
S的长度不超过 10。 对于40% 的数据,n<=50 。 对于100% 的数据,n<2*10^5 。