書き始める前は、この質問は非常に水っぽいと感じていましたが、書いているときに落とし穴を発見しました。前回のコンテストでも遭遇した落とし穴です。詳しい手順は書きませんので、大まかに書きます。
落とし穴は、出力を数えた後、何個出力されたのか、重複した要素が削除できないことですが、考えて議論した結果、ソートされているので変数を定義し、出力後に値を代入することにしました。変数に代入して、次回出力するかどうかを判断する 前回と同様でOKです。
import java.util.*;
public class Test6 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] a = new int[n];
int[] b = new int[n+1];
for(int i=0;i<n;i++) {
a[i]=input.nextInt();
b[i]=a[i];
}
sort(a,n);
int p=0;
for(int i=0;i<n;i++) {
int sum=0;
for(int j=0;j<n;j++) {
if(a[i]==a[j])
sum++;
}
if(p!=0&&p==a[i])
continue;
else
System.out.println(a[i]+" "+sum);
p=a[i];
}
input.close();
}
//排序
public static void sort(int []a,int n) {
for(int i=0;i<n;i++) {
for(int j=i;j<n;j++) {
int change=0;
if(a[i]>a[j]) {
change=a[i];
a[i]=a[j];
a[j]=change;
}
}
}
}
}