結果
| 問題 |
No.282 おもりと天秤(2)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-04-19 07:57:07 |
| 言語 | Java (openjdk 23) |
| 結果 |
TLE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,889 bytes |
| コンパイル時間 | 3,036 ms |
| コンパイル使用メモリ | 81,852 KB |
| 実行使用メモリ | 90,288 KB |
| 平均クエリ数 | 118.29 |
| 最終ジャッジ日時 | 2024-07-17 02:39:41 |
| 合計ジャッジ時間 | 14,920 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 11 TLE * 1 -- * 12 |
ソースコード
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
new Main().run();
}
void remove(boolean[][] g, int[] out_deg, boolean[] removed, int v) {
assert(!removed[v]);
int n=g.length;
for (int i=0;i<n;++i) {
if (g[i][v]) {
--out_deg[i];
}
}
removed[v]=true;
}
void run() {
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
boolean[][] g=new boolean[N][N];
boolean[] removed=new boolean[N];
int[] out_deg=new int[N];
ArrayList<Integer> ans=new ArrayList<>();
PrintWriter pw=new PrintWriter(System.out);
while (true) {
ArrayList<Integer> list=new ArrayList<>();
do {
for (int i=0;i<N;++i) {
if (out_deg[i]==0 && !removed[i]) {
list.add(i);
}
}
if (list.size()==1) {
ans.add(list.get(0));
remove(g, out_deg, removed, list.get(0));
list.remove(0);
} else if(list.size()==0) {
pw.print("! ");
for (int i=0;i<N;++i) {
pw.print((ans.get(i)+1)+(i==N-1?"\n":" "));
}
pw.flush();
return;
}
} while (list.size()==0);
for (int i=0;i<N;++i) {
if (!(out_deg[i]==0 && !removed[i])) list.add(i);
}
for (int i=0;i<N;++i) list.add(-1);
pw.println("? ");
for (int i=0;i<N;++i) {
pw.print((list.get(2*i)+1)+" "+(list.get(2*i+1)+1)+(i==N-1?"\n":" "));
}
pw.flush();
for (int i=0;i<N;++i) {
String op=sc.next();
int a=list.get(2*i),b=list.get(2*i+1);
if (a!=-1 && b!=-1 && op.equals(">") && !g[a][b]) {
g[a][b]=true;
if (!removed[a] && !removed[b]) ++out_deg[a];
} else if(a!=-1 && b!=-1 && op.contentEquals("<") && !g[b][a]) {
g[b][a]=true;
if (!removed[a] && !removed[b]) ++out_deg[b];
}
}
}
}
void tr(Object...objects) {System.out.println(Arrays.deepToString(objects));}
}