結果
問題 | No.241 出席番号(1) |
ユーザー |
|
提出日時 | 2020-03-30 03:48:21 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 127 ms / 2,000 ms |
コード長 | 1,165 bytes |
コンパイル時間 | 4,077 ms |
コンパイル使用メモリ | 85,948 KB |
実行使用メモリ | 54,512 KB |
最終ジャッジ日時 | 2025-01-02 16:18:48 |
合計ジャッジ時間 | 9,306 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 29 |
ソースコード
import java.util.Arrays;import java.util.Scanner;class Main {public static void main(String[] args) {new Main().run();}int target(int[] A,int[] ans) {int p=0;while(p<ans.length&&(ans[p]!=-1||A[p]==-1))++p;if(p<ans.length)return A[p];else {for(int i=0;i<A.length;++i) {boolean flag=true;for(int j=0;j<ans.length;++j)flag&=ans[j]!=i;if(flag)return i;}throw new AssertionError();}}void run() {Scanner sc=new Scanner(System.in);int N=sc.nextInt();int[] A=new int[N];for(int i=0;i<N;++i) {A[i]=sc.nextInt();if(!(0<=A[i]&&A[i]<N))A[i]=-1;}boolean ng=true;for(int i=0;i<N;++i)ng&=A[i]==A[0];ng&=0<=A[0]&&A[0]<N;if(ng) {System.out.println(-1);return;}int[] ans=new int[N];Arrays.fill(ans, -1);for(int i=0;i<N;++i) {int target=target(A, ans);//targetを誰かに塗るint p=0;while(A[p]==target||ans[p]!=-1)++p;ans[p]=target;for(int j=0;j<N;++j)if(ans[j]==-1&&A[j]==target)A[j]=-1;}for(int i=0;i<N;++i)System.out.println(ans[i]);}static void tr(Object... objects) {System.out.println(Arrays.deepToString(objects));}}