#include #include #include typedef struct slist SLIST; struct slist { SLIST *link; char *s; int sl; } ; static char line[80]; static SLIST *v[65536]; static void saveit(int x) { SLIST *s; s = malloc(sizeof(SLIST)); s->s = strdup(&line[0]); s->sl = strlen(s->s); s->link = v[x]; v[x] = s; } static void process(void) { int i; int v; i = strlen(&line[0]); if ((i > 0) && (line[i-1] == '\n')) line[--i] = '\0'; if (i < 48) return; v = 0; for (i=32;i<48;i++) { switch (line[i]) { case '0': v <<= 1; break; case '1': v = (v << 1) | 1; break; default: return; break; } } saveit(v); } static void init(void) { int i; for (i=65535;i>=0;i--) v[i] = 0; } static void check(void) { int i; SLIST *s; for (i=0;i<65536;i++) { s = v[i]; if (! s) continue; if (! s->link) continue; if ( !s->link->link && ( (!strcmp(s->s+48," PR=0") && !strcmp(s->link->s+48," PR=1")) || (!strcmp(s->s+48," PR=1") && !strcmp(s->link->s+48," PR=0")) || (!strcmp(s->s+48," SZ=0") && !strcmp(s->link->s+48," SZ=1")) || (!strcmp(s->s+48," SZ=1") && !strcmp(s->link->s+48," SZ=0")) ) ) continue; printf("\n"); for (;s;s=s->link) printf("%s\n",s->s); } } int main(void); int main(void) { init(); while (fgets(&line[0],sizeof(line)-1,stdin)) { process(); } check(); return(0); }