思路:
设硬币有三种状态 0(正常) 1(超重) -1(低重) ,初始都设置成2
因为只有一个硬币是错误的,说明只要发现不平衡,那个硬币就在这左右两组中,其他的都是正确的
1.当<时,说明左边轻,右边重,左边都设成低重,右边都设成超重,其他硬币都是正确的
2.当>时,说明左边重,右边轻,左边都设成超重,右边都设成低重,其他硬币都是正确的
如果一个硬币既超重又低重,则为正常硬币
3.当=时,说明两个硬币都是正确的。

*如果不唯一的错误,说明无法判断 *

#include<iostream>
#include<string>
using namespace std;
const int maxn=1001;
char op;
int w[maxn],t[maxn],n,k,m; 
void init(){
    for(int i=0;i<maxn;i++)w[i]=2;
} 
int main(){
    cin>>n>>k;
    init();
    for(int i=0;i<k;i++){
        cin>>m;
        for(int j=0;j<2*m;j++){
            cin>>t[j];
        }cin>>op;
        if(op=='='){
            for(int j=0;j<2*m;j++){
                w[t[j]]=0;//设置为正常 
            }    
        }else if(op=='<'){
            for(int j=1;j<=n;j++){
                bool flag=false;
                for(int k=0;k<2*m;k++){
                    if(j==t[k]&&k<m){ //左边轻的 
                        if(w[j]==1)w[j]=0;
                        else if(w[j]==2)w[j]=-1;
                        flag=true;break;        
                    }else if(j==t[k]&&k>=m){//右边重的 
                        if(w[j]==-1)w[j]=0;
                        else if(w[j]==2)w[j]=1;
                        flag=true;break;
                    } 
                }
                if(!flag)w[j]=0; //其他都设置成正常
            } 
        }else if(op=='>'){
            for(int j=1;j<=n;j++){
                bool flag=false;
                for(int k=0;k<2*m;k++){
                    if(j==t[k]&&k<m){ //左边重的 
                        if(w[j]==-1)w[j]=0;
                        else if(w[j]==2)w[j]=1;
                        flag=true;break;        
                    }else if(j==t[k]&&k>=m){//右边轻的 
                        if(w[j]==1)w[j]=0;
                        else if(w[j]==2)w[j]=-1;
                        flag=true;break;
                    } 
                }
                if(!flag)w[j]=0;//其他都设置成正常
            } 
        }
    }int res,sum=0; 
    for(int i=1;i<=n;i++){
        if(w[i]!=0){
            res=i;sum++;
        }
    }
    //cout<<"sum:"<<sum<<endl;
    if(sum==1)cout<<res<<endl;
    else cout<<0<<endl;
    return 0;
}