#include <iostream>
#include <vector>
#include <string>
int da[1001];
using namespace std;
//谢谢博友文章
//假币不知道轻重
int main()
{
int NUM,N;
cin>>NUM>>N;
vector<int> gs;
vector<int> sz[N];
vector<string> bj;
for(int i=0;i<N;i++)
{
int m;
cin>>m;
gs.push_back(m);
for(int j=0;j<m*2;j++)
{
int t;
cin>>t;
sz[i].push_back(t);
}
string t;
cin>>t;
bj.push_back(t);
}
/*
for(int i=0;i<N;i++)
{
cout<<gs[i]<<endl;
for(int j=0;j<gs[i]*2;j++)
{
cout<<sz[i][j]<<" ";
}
cout<<endl<<bj[i]<<endl;
}*/
int jg=0;
int js=0;
for(int i=1;i<NUM+1;i++)
{
da[i]=1;//重
int flag=0;
for(int j=0;j<N;j++)
{
int a=0,b=0;
for(int k=0;k<gs[j];k++)
{
a=a+da[sz[j][k]];
}
for(int k=gs[j];k<gs[j]*2;k++)
{
b=b+da[sz[j][k]];
}
string fh;
fh=bj[j];
//cout<<"i "<<i<<" "<<a<<fh<<b<<endl;
if((fh=="<")&&((a<b)==1))
{
}else if((fh==">")&&((a>b)==1))
{
}else if((fh=="=")&&(a==b))
{
}else
{
flag=1;
break;
}
}
da[i]=0;
if(flag==0)
{
jg=i;
js++;
}
}
for(int i=1;i<NUM+1;i++)
{
da[i]=-1;//轻
int flag=0;
for(int j=0;j<N;j++)
{
int a=0,b=0;
for(int k=0;k<gs[j];k++)
{
a=a+da[sz[j][k]];
}
for(int k=gs[j];k<gs[j]*2;k++)
{
b=b+da[sz[j][k]];
}
string fh;
fh=bj[j];
//cout<<"i "<<i<<" "<<a<<fh<<b<<endl;
if((fh=="<")&&((a<b)==1))
{
}else if((fh==">")&&((a>b)==1))
{
}else if((fh=="=")&&(a==b))
{
}else
{
flag=1;
break;
}
}
da[i]=0;
if(flag==0)
{
if(jg!=i)//轻重可能是同一硬币
{
jg=i;
js++;
}
}
}
if(js==1)
{
cout<<jg<<endl;
}else
{
cout<<0<<endl;
}
return 0;
}
N个硬币每枚都有编号,其中一枚是假币,使用天平比较。K次比较,每次比较占两行,第1行第一个数字Pi表示天平一边放几枚硬币,
依次输出天平左右两边的硬币号,下一行输入天平结果(“左”<"右")。求假币编号。
#include <iostream>
using namespace std;
//抄博友好程序 不易出错 思路清晰
int l[100008];
int r[100008];
int da[100008];
int xiao[100008];
int main()
{
int n,k;
cin>>n>>k;
int num=0;
for(int i=0;i<k;i++)
{
int m;
cin>>m;
for(int j=0;j<m;j++)
{
cin>>l[j];
}
for(int j=0;j<m;j++)
{
cin>>r[j];
}
char c;
cin>>c;
if(c=='<')
{
num++;
for(int j=0;j<m;j++)
{
if(xiao[l[j]]!=-1)
{
xiao[l[j]]++;
}
if(da[r[j]]!=-1)
{
da[r[j]]++;
}
}
}else if(c=='>')
{
num++;
for(int j=0;j<m;j++)
{
if(da[l[j]]!=-1)
{
da[l[j]]++;
}
if(xiao[r[j]]!=-1)
{
xiao[r[j]]++;
}
}
}else if(c=='=')
{
for(int j=0;j<m;j++)
{
da[l[j]]=-1;
da[r[j]]=-1;
xiao[l[j]]=-1;//抄博友
xiao[r[j]]=-1;
}
}
}
int js=0;
int jg=0;
for(int i=1;i<=n;i++)
{
if(da[i]==num || xiao[i]==num)
{
jg=i;
js++;
}
}
if(js==1)
{
cout<<jg<<endl;
}else
{
cout<<0<<endl;
}
return 0;
}