123 - Searching Quickly

来源:互联网 发布:债券逆回购 知乎 编辑:程序博客网 时间:2024/05/21 17:41
#include <stdio.h>#include <string.h>#include <ctype.h>#include <algorithm>typedef struct{     char word[30];     int row,start,end;} KEYWORD;char ignore[50][20];char titles[250][500];KEYWORD keywords[3000];int cmp(const void*a,const void*b){if(strcmp(((KEYWORD *)a)->word,((KEYWORD *)b)->word)!=0)return strcmp(((KEYWORD *)a)->word,((KEYWORD *)b)->word);elsereturn ((KEYWORD *)a)->row-((KEYWORD *)b)->row;}int main(){int n=0,count=0;char buf[500];while(scanf("%s",ignore[n])){if(ignore[n][0]==':')break;n++;}n=0;getchar();while(fgets(buf,500,stdin)!=NULL){for(int i=0;buf[i]!='\n';i++)buf[i]=tolower(buf[i]);strcpy(titles[n],buf);buf[strlen(buf)-1]='\0';int position=0;char *wordTmp=strtok(buf," ");while(wordTmp!=NULL){int flag=0;for(int i=0;i<50;i++){if(strcmp(ignore[i],wordTmp)==0)flag=1;}if(flag==0){strcpy(keywords[count].word,wordTmp);keywords[count].row=n;keywords[count].start=position;keywords[count].end=position+strlen(wordTmp)-1;count++;}position=position+strlen(wordTmp)+1;wordTmp=strtok(NULL," ");}n++;}qsort(keywords,count,sizeof(keywords[0]),cmp);for(int i=0;i<count;i++)for(int j=0;j<strlen(titles[keywords[i].row]);j++){if(j<keywords[i].start || j>keywords[i].end)putchar(titles[keywords[i].row][j]);else putchar(toupper(titles[keywords[i].row][j]));}return 0;}

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=98&problem=59&mosmsg=Submission+received+with+ID+14190849
0 0
原创粉丝点击