Java/C++P 1271【ディープベース9.例1】生徒会選挙(カウント順)


テーマ説明学校では生徒会メンバーを選出しており、n(nle 999)n(n≦999)名の候補者がおり、各候補番号はそれぞれ1からnnまでで、現在はm(m<=200000)m(m<=200000)m(m<=200000)枚の票が集められ、各票に候補番号が書かれている.今、これらの山のような票を投票数によって小さい順に並べたい.nnとmmおよびmm個の票の数字を入力し、並べ替えた票番号を求める.
入力形式なし
出力フォーマットなし
入出力サンプル入力#1コピー5 10 2 5 2 2 5 2 2 2 2 2 2 1 2出力#1コピー1 2 2 2 2 2 5
Java(時間制限が過ぎていないのでC++)に変更


import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int[] nums = new int[m];
        for(int i = 0; i < m; i++) {
            nums[i] = sc.nextInt();
        }
        //    
        //        
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;
        for(int i = 0; i < m; i++) {
            min = Math.min(nums[i], min);
            max = Math.max(nums[i], max);
        }
        int[] arr = new int[max - min + 1];
        for(int i = 0; i < m; i++) {
            arr[nums[i] - min]++;
        }
        for(int i = 0; i < arr.length; i++) {
            int k = arr[i];
            while (k > 0) {
                System.out.print((i + min) + " ");
                k--;
            }
        }
    }
}

C++
#include
using namespace std;
int n, m, i, a;
int nums[1000];
int main()
{
	cin>>n>>m;
	for(i = 0; i < m; i++) {
		cin>>a;
		++nums[a];
	}
	for(i = 0; i < 1000; i++) {
		while(nums[i]--) {
			cout<