去重+排序板子(set+map)

题意:

给定n个数,去重排序后输出个数和每个数

1.map实现

#pragma GCC optimize("O2")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<limits.h>
#include<ctime>
#define N 100001
typedef long long ll;
const int inf=999999999;
const int maxn=2017;
using namespace std;
inline int read()
{
    int f=1,x=0;char ch=getchar();
    while(ch>'9'|ch<'0')
    {
        if(ch=='-')
        f=-1;
        ch=getchar();
    }
    while(ch<='9'&&ch>='0')
    {
        x=(x<<3)+(x<<1)+ch-'0';
        ch=getchar();
    }
    return f*x;
}
typedef map<int,bool> mp;
mp m;
int main()
{
	int n=read();
	for(int i=1;i<=n;i++)
	{int k=read();m[k]=1;}
	cout<<m.size()<<endl;
	for(mp::iterator i=m.begin();i!=m.end();i++)
	cout<<i->first<<endl;
}

 2.set实现

#pragma GCC optimize("O2")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<limits.h>
#include<ctime>
#define N 100001
typedef long long ll;
const int inf=999999999;
const int maxn=2017;
using namespace std;
inline int read()
{
    int f=1,x=0;char ch=getchar();
    while(ch>'9'|ch<'0')
    {
        if(ch=='-')
        f=-1;
        ch=getchar();
    }
    while(ch<='9'&&ch>='0')
    {
        x=(x<<3)+(x<<1)+ch-'0';
        ch=getchar();
    }
    return f*x;
}
set<int>s;
int main()
{
    int n=read();
    for(int i=1;i<=n;i++)
    {int k=read();s.insert(k);}
    printf("%d",s.size());
    for(set<int>::iterator i=s.begin();i!=s.end();i++)
    cout<<*i<<endl;
}

 

posted @ 2017-09-05 07:37  a799091501  阅读(203)  评论(2编辑  收藏  举报