#include #include #include #include #include #include #include #include using namespace std; const int INF=20000; int n; struct X { char s[1000]; int L[35],R[35]; }h[1000+10]; mapm; int cnt; char tmp[1000]; char Na[1000]; int op,num; int L,R; void get() { memset(Na,0,sizeof Na); int i; for(i=0;tmp[i];i++) { if(tmp[i]==' ') continue; else break; } int g=0; for(;tmp[i];i++) { if(tmp[i]>='a'&&tmp[i]<='z') Na[g++]=tmp[i]; else break; } for(;tmp[i];i++) { if(tmp[i]==' ') continue; else break; } if(tmp[i]=='<') { if(tmp[i+1]=='=') op=2; else op=1; } if(tmp[i]=='=') op=3; if(tmp[i]=='>') { if(tmp[i+1]=='=') op=4; else op=5; } num=0; int u=1; for(;tmp[i];i++) { if(tmp[i]=='-') u=-1; if(tmp[i]>='0'&&tmp[i]<='9') num=num*10+tmp[i]-'0'; } num=num*u; if(op==3) L=R=num; else if(op==1) L=-INF,R=num-1,op=2; else if(op==2) L=-INF,R=num; else if(op==4) L=num,R=INF; else if(op==5) L=num+1,R=INF,op=4; // printf("%s %d %d %d\n",Na,op,L,R); } bool check(int a,int b) { for(int i=1;i<=30;i++) { if(h[a].L[i]==-774388357) return 0; if(h[b].L[i]==-774388357) return 0; } for(int i=1;i<=30;i++) { if(h[a].R[i]h[b].R[i]) return 0; } return 1; } int main() { while(~scanf("%d",&n)){ getchar(); m.clear(); cnt=0; for(int i=1;i<=n;i++) gets(h[i].s); for(int i=1;i<=n;i++) { int len=strlen(h[i].s); char name[35]; int tot=0; memset(name,0,sizeof name); for(int j=0;j='a'&&h[i].s[j]<='z') name[tot++]=h[i].s[j]; else { if(name[0]==0) continue; if(m[name]==0) m[name]=++cnt; tot=0; memset(name,0,sizeof name); } } } for(int i=1;i<=n;i++) { int len=strlen(h[i].s); int pos=0; memset(tmp,0,sizeof tmp); int f=0; for(int j=1;j<=30;j++) h[i].L[j]=-INF,h[i].R[j]=INF; while(pos<=len) { if(h[i].s[pos]==','||h[i].s[pos]==0) { get(); if(h[i].L[m[Na]]!=-774388357) { if(op==2) { if(Rh[i].R[m[Na]]) h[i].L[m[Na]]=h[i].R[m[Na]]=-774388357; else h[i].L[m[Na]]=max(h[i].L[m[Na]],L); } } memset(tmp,0,sizeof tmp); f=0; } else tmp[f++]=h[i].s[pos]; pos++; } } /* for(int i=1;i<=n;i++) { for(int j=1;j<=4;j++) { printf(" +++ %d ",j); printf("%d , %d ",h[i].L[j],h[i].R[j]); } printf("\n"); } */ for(int i=1;i<=n;i++) { bool fail=0; vectorv; for(int j=1;j