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;
}