1008: Noip
Time Limit:1000MS Memory Limit:32768KByte 64 IO Format:%I64d & %I64u
Description
一年一度的noip又开始,选手们比完赛后会在F盘下新建出很多的文件和文件夹。现在我们要根据要求收取其中的文件,请你写个程序帮我们计算一下收到了哪些文件。
Input
第一行一个整数T,表示有T组数据。
每组数据第一行两个整数N M,表示该组数据有N个文件,且收取了M次。
接着N行给出每个文件的绝对路径。
然后M行给出一条收取信息。
每条收取信息格式为
path S
表示收取path文件夹下扩展名为 S 的所有文件。 给出的path都是以\ 结束, S都是以.开头。
0 < T < 20, 0 < N <=100, 0 < M <= 100
所有的文件夹名,文件名,扩展名都由小写字母组成。
Output
对于每条收取信息,按文件输入的顺序输出满足条件的文件。
Sample Input
2 3 2 F:\exp.pas F:\a\a.cpp F:\a\a\a.c F:\ .pas F:\a\ .c 3 2 F:\exp.pas F:\a\a.cpp F:\a\a\a.c F:\ .c F:\a\ .pas
Sample Output
F:\exp.pas F:\a\a\a.c F:\a\a\a.c
#include<stdio.h> #include<string.h> struct node{ char path[10000]; int len; }num[2000]; int main() { int n, i, j, t, m; char name[10000], filetype[10000]; scanf("%d",&t); while(t--) { scanf("%d %d",&n, &m); for(i = 0; i < n; i++) { scanf("%s",num[i].path); num[i].len = strlen(num[i].path); } while(m--) { scanf("%s%s",name, filetype); for(i = 0; i < n; i++) { if(!(strstr(num[i].path, name) - num[i].path) && num[i].len - (strstr(num[i].path, filetype) - num[i].path)== strlen(filetype)) printf("%s\n",num[i].path); } } } return 0; }