Beta Round #57-B: Hard Work
解法
3!通り全部試すだけ。泥臭く書いた。
#include <stdio.h> #include <stdlib.h> #include <string.h> char s1[200], s2[200], s3[200]; char ss1[200], ss2[200], ss3[200]; char oks[6][400]; char line[800]; char str[800]; void init(){ int i,p; p = 0; for(i=0;ss1[i];i++)if(isalpha(ss1[i])) s1[p++] = tolower(ss1[i]); s1[p] = '\0'; p = 0; for(i=0;ss2[i];i++)if(isalpha(ss2[i])) s2[p++] = tolower(ss2[i]); s2[p] = '\0'; p = 0; for(i=0;ss3[i];i++)if(isalpha(ss3[i])) s3[p++] = tolower(ss3[i]); s3[p] = '\0'; strcat(oks[0],s1); strcat(oks[0]+strlen(oks[0]),s2); strcat(oks[0]+strlen(oks[0]),s3); strcat(oks[1],s1); strcat(oks[1]+strlen(oks[1]),s3); strcat(oks[1]+strlen(oks[1]),s2); strcat(oks[2],s2); strcat(oks[2]+strlen(oks[2]),s1); strcat(oks[2]+strlen(oks[2]),s3); strcat(oks[3],s2); strcat(oks[3]+strlen(oks[3]),s3); strcat(oks[3]+strlen(oks[3]),s1); strcat(oks[4],s3); strcat(oks[4]+strlen(oks[4]),s1); strcat(oks[4]+strlen(oks[4]),s2); strcat(oks[5],s3); strcat(oks[5]+strlen(oks[5]),s2); strcat(oks[5]+strlen(oks[5]),s1); } int solve(){ int i, p=0; for(i=0;line[i];i++)if(isalpha(line[i])) str[p++] = tolower(line[i]); str[p] = '\0'; for(i=0;i<6;i++)if(!strcmp(oks[i],str)) return 1; return 0; } int main(){ int i, n; scanf("%s ",ss1); scanf("%s ",ss2); scanf("%s ",ss3); scanf("%d ",&n); init(); for(i=0; i<n; i++){ scanf("%s ",line); puts(solve()?"ACC":"WA"); } return 0; }