[FZYZOJ 2148] 小添添的灰机猫

P2148 -- 小添添的灰机猫

时间限制:1000MS

内存限制:131072KB

Description

成功从WTM晋升为ACM的小添添越来越SXBK了,开始将魔爪伸向了自己的灰H机J猫。事情是这样的,小添添有k只猫,分别是0~k-1。他先用rand() % k随机出了N个数,告诉你他需要临幸的灰机猫的编号,如果一只猫多次出现,也只算一次。因为小添添一开始就按照自己喜欢的顺序排好了编号,所以选出来的猫的顺序不能乱。请告诉他他将临幸哪些灰机猫。

Input Format

第一行输入两个正整数N和k,表示有题目中的N和k。

第二行有N个正整数,为rand() % k的结果。

Output Format

第一行一个整数,表示选出的猫的个数。

第二行为选出的猫的编号,数字之间用空格隔开

Sample Input

3 5
2 3 3

Sample Output

2
2 3

Hint

【题解】

这题是一个练习STL_set的好题目啊,特别要学会iterator怎么使用

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 set<int> t;
 4 char B[1<<15],*S=B,*T=B;
 5 char getchar2() {
 6     return S==T&&(T=(S=B)+fread(B,1,1<<15,stdin),S==T)?0:*S++;
 7 }
 8 int read2() {
 9     int x=0; int f=1;
10     char ch=getchar2();
11     while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=getchar2();}
12     while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+ch-'0'; ch=getchar2();}
13     return x*f;
14 }
15 int main() {
16     int n, x;
17     n=read2();read2();
18     for(int k = 0; k < n; k++) {
19         x=read2();
20         t.insert(x);
21     }
22     printf("%d\n", t.size());
23     for(set<int>::iterator i = t.begin(); i != t.end(); i++) printf("%d ", *i);
24 }
View Code

 

posted @ 2015-06-12 11:52  TonyFang  阅读(240)  评论(0编辑  收藏  举报