1. 程式人生 > >CCF 門禁系統

CCF 門禁系統

一、試題

問題描述
  濤濤最近要負責圖書館的管理工作,需要記錄下每天讀者的到訪情況。每位讀者有一個編號,每條記錄用讀者的編號來表示。給出讀者的來訪記錄,請問每一條記錄中的讀者是第幾次出現。
輸入格式
  輸入的第一行包含一個整數n,表示濤濤的記錄條數。
  第二行包含n個整數,依次表示濤濤的記錄中每位讀者的編號。
輸出格式
  輸出一行,包含n個整數,由空格分隔,依次表示每條記錄中的讀者編號是第幾次出現。
樣例輸入
5
1 2 1 1 3
樣例輸出
1 1 2 3 1
評測用例規模與約定
  1≤n≤1,000,讀者的編號為不超過n的正整數。

二、程式碼

利用map庫的一個小技巧,++mapNum[num];如果沒有num這個key,增加一個並賦值1,否則自增。

#include<cstdio>
#include<map>

using namespace std;

int main(){
    int n,num;
    int to[1000];
    map<int, int> mapNum;
    scanf("%d", &n);
    for(int i=0; i<n; i++){
        scanf("%d", &num);
        ++mapNum[num];
        to[i] = mapNum[num];
    }
    for(int j=0
; j<n; j++){ printf("%d%s", to[j], " "); } return 0; }