您的位置:首页 > 其它

hdoj1707(set)(s[day][time].insert(name))(cout<<" "<<*it)

2012-02-27 12:53 375 查看
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <set>
#include <string>
using namespace std;

set<string>s[8][12];

int main()
{

//freopen("in.txt","r",stdin);

int ncase,ns,nq;int i,j,k;

//ncase相当于ca,就是例子的数量
scanf("%d",&ncase);
while(ncase--)
{
for(i=0;i<8;i++)
for(int j=0;j<12;j++)
s[i][j].clear();//这个函数清除所有的元素

//相当于学生的数量
scanf("%d",&ns);
for(i=0;i<ns;i++)
{
char name[50];
int nc;

//输入名字和课程表的数量
scanf("%s %d",name,&nc);
for(j=0;j<nc;j++)
{
int day,begins,ends;
//输入
scanf("%d%d%d",&day,&begins,&ends);

//把begins和ends之间的都填上名字
for(k=begins;k<=ends;k++)
{
s[day][k].insert(name);//插入,s[day][k];day是星期数,k是时间数。
//表示day天,k时刻的时候name
}
}
}

//开始查询

//输入查询次数
scanf("%d",&nq);
for(i=0;i<nq;i++)
{
//声明一个result让后清空
set<string>	result;
result.clear();

//输入查询的day和begins和ends
int day,begins,ends;
scanf("%d%d%d",&day,&begins,&ends);

//声明一个迭代器
set<string>::iterator it;

//k表示时间段,从开始到结束
for(k=begins;k<=ends;k++)
{
for(it = s[day][k].begin();it!=s[day][k].end();it++)
result.insert(*it);
}

//如果说为空
if(result.empty())
cout<<"None";
else
{

it = result.begin();
cout<<*it;
it++;
for(;it!=result.end();it++)
cout<<" "<<*it;
}
cout<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐