刚开始没理解,忽略了天数和时间的的关系。后来才改过来。。。
没什么难度,就个结构体。。(刚开始以为是线段树。。)
#include"stdio.h"
#include"string.h"
#include"stdlib.h";
struct node
{
int day[10][15];
char name[21];
}A[201];
int cmp(const void*a,const void*b)
{
return strcmp((*(struct node*)a).name,(*(struct node*)b).name);
}
int main()
{
int t;
int n;
int nn;
int nnn;
int i,j,l;
int a,b,c;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
memset(A,0,sizeof(A));
for(i=0;i<n;i++)
{
scanf("%s",A[i].name);
scanf("%d",&nn);
for(j=0;j<nn;j++)
{
scanf("%d%d%d",&a,&b,&c);
A[i].day[a][0]=1;
for(l=b;l<=c;l++)
A[i].day[a][l]=1;
}
}
qsort(A,n,sizeof(A[0]),cmp);
int cnt,f;
scanf("%d",&nnn);
for(i=0;i<nnn;i++)
{
cnt=f=0;
scanf("%d%d%d",&a,&b,&c);
for(j=0;j<n;j++)
{
if(A[j].day[a][0]==1)
{
for(l=b;l<=c;l++)
{
if(A[j].day[a][l]==1)
{
cnt++;f=1;
if(cnt==1)printf("%s",A[j].name);
else printf(" %s",A[j].name);
break;
}
}
}
}
if(!f)printf("None");
printf("\n");
}
}
return 0;
}