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