読者です 読者をやめる 読者になる 読者になる

日々精進

aikoと旅行とプログラミング

【AOJ ALDS1_6】A: Counting Sort

問題

Counting Sort | Aizu Online Judge

方針

  • 計数ソート(バケットソート)をしよう.
  • アルゴリズムは問題をそのまま実装.

コード

#include<bits/stdc++.h>

#define rep(i, n) REP(i, 0, n)
#define REP(i, a, n) for(int i = a ; i < (int)n ; i++)

using namespace std;

int a[2000001];
int b[2000001];  
int c[2000001];

signed main(){
  int n;
  cin >> n;
  
  memset(c, 0, sizeof(c));

  rep(i,n){
    cin >> a[i+1];
    c[a[i+1]]++;
  }

  REP(i, 1, 2000001){
    c[i] += c[i-1];
  }
  
  REP(i,1,n+1){
    b[c[a[i]]] = a[i];
    c[a[i]]--;
  }

  cout << b[1];
  REP(i,2,n+1){
    cout << " " << b[i];
  }
  cout << "\n";
}