UVA (POJ 1598)Excuses, Excuses!(二)

2015-01-27 05:55:45 · 作者: · 浏览: 8
include #include using namespace std; int n,m; struct node { int x,y; } q[100010]; int cmp(const void *a,const void *b) { return (*(struct node*)a).y - (*(struct node*)b).y; } int main() { int e = 0; while(scanf("%d%d",&n,&m)!=EOF) { char a[10001]; map p; map ::iterator it; for(int i=0; i ='A' && a[j]<='Z') { a[j] = a[j] + 32; } } p[a] = 1; } char b[3001][101]; char str[3001][110]; memset(q,0,sizeof(q)); getchar(); for(int i=0; i ='a' && b[i][j]<='z') || (b[i][j]>='A' && b[i][j]<='Z')) { str[t][k++] = b[i][j]; } else { str[t][k] = '\0'; t++; k = 0; } } str[t][k] = '\0'; q[i].x = i; for(int j=0; j<=t; j++) { if((str[j][0] >
='A' && str[j][0]<='Z') || (str[j][0]>='a' && str[j][0]<='z')) { for(int v=0; str[j][v]!='\0'; v++) { if(str[j][v]>='A' && str[j][v]<='Z') { str[j][v] = str[j][v] + 32; } } if((str[j][0] >='a' && str[j][0]<='z') && p[str[j]] == 1) { //printf("%s\n",str[j]); q[i].y++; } } } } qsort(q,m,sizeof(q[0]),cmp); printf("Excuse Set #%d\n",++e); printf("%s\n",b[q[m-1].x]); for(int i=m-2; i>=0; i--) { if(q[i].y == q[i+1].y) { printf("%s\n",b[q[i].x]); } else { break; } } printf("\n"); } return 0; }