1. 程式人生 > >1581:小哼買書

1581:小哼買書

1581:小哼買書

Description

小哼的學校要建立一個圖書角,老師派小哼去找一些同學做調查,看看同學們都喜歡讀哪些書。小哼讓每個同學寫出一個自己最想讀的書的ISBN號(你知道嗎?每本書都有唯一的ISBN號,不信話你去找本書翻到背面看看)。當然有一些好書會有很多同學都喜歡,這樣就會收集到很多重複的ISBN號。小哼需要去掉其中重複的ISBN號,即每個ISBN號只保留一個,也就說同樣的書只買一本(學校真是夠摳門的)。然後再把這些ISBN號從小到大排序,小哼將按照排序好的ISBN號去書店去買書。請你協助小哼完成“去重”與“排序”的工作。

INput

輸入有2行,第1行為一個正整數,表示有n個同學參與調查(n<=100)。第2行有n個用空格隔開的正整數,為每本圖書的ISBN號(假設圖書的ISBN號在1~1000之間)。

Output

輸出也是2行,第1行為一個正整數k,表示需要買多少本書。第2行為k個用空格隔開的正整數,為從小到大已排好序的需要購買的圖書ISBN號,輸出結果末尾沒有空格。

Sample Input

10

20 40 32 67 40 20 89 300 400 15

Sample Output

8

15 20 32 40 67 89 300 400

HINT

改編自全國青少年資訊學奧林匹克聯賽(NOIP2006)普及組第一題《明明的隨機數》。

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int n,m=0,a[500];
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];
    for(int i=0;i<n-1;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(a[i]==a[j])
                a[j]=-1;
        }
    }
   sort(a,a+n);
   for(int i=0;i<n;i++)
   {
       if(a[i]!=-1)
        m++;
   }
   cout<<m<<endl;
   int temp;
   for(int i=0;i<n;i++)
   {
       if(a[i]!=-1)
        {
            temp=i;
            cout<<a[i];
            break;
        }
   }
   for(int j=temp+1;j<n;j++)
    cout<<" "<<a[j];
 
}