#include<stdio.h> #include<string.h> typedef struct { int xishu; int zhishu; }elemtype; int main() { elemtype a[100],b[100],c[200]; int lena,lenb,lenc; char s1[101],s2[101],*t; int i,j; while(gets(s1) && strlen(s1)) { gets(s2); lena=lenb=lenc=0; t=strtok(s1," \n\t"); while(t) { sscanf(t,"%d",&a[lena].xishu); t=strtok(NULL," \n\t"); sscanf(t,"%d",&a[lena].zhishu); t=strtok(NULL," \t\n"); lena++; } t=strtok(s2," \n\t"); while(t) { sscanf(t,"%d",&b[lenb].xishu); t=strtok(NULL," \n\t"); sscanf(t,"%d",&b[lenb].zhishu); t=strtok(NULL," \t\n"); lenb++; } i=j=0; while(i<lena && j<lenb) { if(a[i].zhishu>b[j].zhishu) { c[lenc].zhishu=a[i].zhishu; c[lenc].xishu=a[i].xishu; ++i;++lenc; } else if(a[i].zhishu<b[j].zhishu) { c[lenc].zhishu=b[j].zhishu; c[lenc].xishu=b[j].xishu; ++j;++lenc; } else if(a[i].zhishu==b[j].zhishu) { if(a[i].xishu+b[j].xishu) { c[lenc].zhishu=a[i].zhishu; c[lenc].xishu=a[i].xishu+b[j].xishu; ++lenc; } ++i;++j; } } while(i<lena) { c[lenc].xishu=a[i].xishu; c[lenc].zhishu=a[i].zhishu; ++lenc; ++i; } while(j<lenb) { c[lenc].xishu=b[j].xishu; c[lenc].zhishu=b[j].zhishu; ++lenc; ++j; } for(i=0;i<lenc;i++) printf("%d %d ",c[i].xishu,c[i].zhishu); printf("\n"); } return 0; } /************************************************************** Problem: 2141 User: admin Language: C Result: Accepted Time:9 ms Memory:1144 kb ****************************************************************/