题目描述
Younik挂好号之后,就去找医生了。但是她没想到,看医生居然也要排队! 于是younik可怜兮兮地站在大厅里,盯着墙上的显示屏,显示屏会不停地打出名字,如果一个人被叫到但没进去,显示屏可能会叫他很多次。 你能告诉younik她是第几个被叫到的人吗? Ps.如果一个人被叫了两次,他还是一个人,不能算两个人。(题目数据范围为200)
输入描述:
第一行是一个正整数n,表示显示屏会叫几次。 接下来n行,每行都是一个名字。
输出描述:
一个正整数,表示younik是第几个被叫到的人。不需要换行。
示例
输入: 6 zhangsan lisi wangwu lisi younik liliu
输出: 4
思路
即数出现lisi之前有几个人名就可以,可以使用STL中的集合
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
set<string> a;
int n;
cin>>n;
string c;
string name="younik";
while(1)
{
cin>>c;
if(c==name)break;
a.insert(c);
}
cout<<a.size()+1;
}
set操作补充
set<类型> 变量名
begin() 返回set容器的第一个迭代器
end() 返回set容器的最后一个迭代器
clear() 删除set容器中的所有的元素
empty() 判断set容器是否为空
max_size() 返回set容器可能包含的元素最大个数
size() 返回当前set容器中的元素个数
rbegin 返回的值和end()相同
rend() 返回的值和rbegin()相同
.erase函数
.erase(iterator position,iterator position)
传一个参数时,返回值时被删元素的下一个元素的迭代器
string特有的一种用法
erase(0,1)从0位置开始的1个元素,返回值是操作后的容器
|