結果
問題 | No.8081 HQ9+ |
ユーザー |
|
提出日時 | 2021-04-01 21:54:10 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 94 ms / 2,000 ms |
コード長 | 6,646 bytes |
コンパイル時間 | 3,647 ms |
コンパイル使用メモリ | 80,936 KB |
実行使用メモリ | 49,532 KB |
最終ジャッジ日時 | 2024-12-21 06:13:31 |
合計ジャッジ時間 | 6,167 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 21 |
ソースコード
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.util.*;import java.util.function.IntUnaryOperator;import java.util.function.LongUnaryOperator;public class Main {static In in = new In();static Out out = new Out();static final long inf = 0x1fffffffffffffffL;static final int iinf = 0x3fffffff;static final double eps = 1e-9;static long mod = 1000000007;void solve(boolean naive) {try {int n = in.nextInt();String s = in.next();if (s.matches("[a-zA-GI-PR-ZQ]+")) {int qc = s.length() - s.replace("Q", "").length();int qqc = (int)Math.sqrt(qc);if ((qqc + 1) * (qqc + 1) == qc) {qqc++;}if (qqc * qqc != qc) {out.println(-1);return;}if (s.length() / qqc * qqc != s.length()) {out.println(-1);return;}String t = null;for (int i = 0; i < qqc; i++) {String tt = s.substring(i * (s.length() / qqc), (i + 1) * (s.length() / qqc));if (t == null) {t = tt;} else if (!t.equals(tt)) {out.println(-1);return;}}out.println(t);} else {out.println(-1);}} catch (Throwable t) {out.println(-1);}}public static void main(String[] args) {new Main().solve(args.length == 1 && args[0].equals("naive"));out.flush();}}class In {private final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in), 0x10000);private StringTokenizer tokenizer;String next() {try {while (tokenizer == null || !tokenizer.hasMoreTokens()) {tokenizer = new StringTokenizer(reader.readLine());}} catch (IOException ignored) {}return tokenizer.nextToken();}int nextInt() {return Integer.parseInt(next());}long nextLong() {return Long.parseLong(next());}double nextDouble() {return Double.parseDouble(next());}char[] nextCharArray() {return next().toCharArray();}char[][] nextCharGrid(int n, int m) {char[][] a = new char[n][m];for (int i = 0; i < n; i++) {a[i] = next().toCharArray();}return a;}int[] nextIntArray(int n) {int[] a = new int[n];for (int i = 0; i < n; i++) {a[i] = nextInt();}return a;}int[] nextIntArray(int n, IntUnaryOperator op) {int[] a = new int[n];for (int i = 0; i < n; i++) {a[i] = op.applyAsInt(nextInt());}return a;}int[][] nextIntMatrix(int h, int w) {int[][] a = new int[h][w];for (int i = 0; i < h; i++) {a[i] = nextIntArray(w);}return a;}long[] nextLongArray(int n) {long[] a = new long[n];for (int i = 0; i < n; i++) {a[i] = nextLong();}return a;}long[] nextLongArray(int n, LongUnaryOperator op) {long[] a = new long[n];for (int i = 0; i < n; i++) {a[i] = op.applyAsLong(nextLong());}return a;}long[][] nextLongMatrix(int h, int w) {long[][] a = new long[h][w];for (int i = 0; i < h; i++) {a[i] = nextLongArray(w);}return a;}List<List<Integer>> nextEdges(int n, int m) {List<List<Integer>> res = new ArrayList<>();for (int i = 0; i < n; i++) {res.add(new ArrayList<>());}for (int i = 0; i < m; i++) {int u = nextInt() - 1;int v = nextInt() - 1;res.get(u).add(v);res.get(v).add(u);}return res;}}class Out {private final PrintWriter out = new PrintWriter(System.out);boolean autoFlush = false;void println(Object... args) {if (args.length == 0) {args = new Object[] {""};}if (args.getClass() != Object[].class) {args = new Object[] {args};}StringJoiner joiner = new StringJoiner(" ");for (Object obj : args) {if (obj == null) {joiner.add(null);continue;}Class<?> clazz = obj.getClass();if (clazz == byte[].class) {joiner.add(Arrays.toString((byte[])obj));} else if (clazz == short[].class) {joiner.add(Arrays.toString((short[])obj));} else if (clazz == int[].class) {joiner.add(Arrays.toString((int[])obj));} else if (clazz == long[].class) {joiner.add(Arrays.toString((long[])obj));} else if (clazz == char[].class) {joiner.add(Arrays.toString((char[])obj));} else if (clazz == float[].class) {joiner.add(Arrays.toString((float[])obj));} else if (clazz == double[].class) {joiner.add(Arrays.toString((double[])obj));} else if (clazz == boolean[].class) {joiner.add(Arrays.toString((boolean[])obj));} else if (obj instanceof Object[]) {joiner.add(Arrays.deepToString((Object[])obj));} else {joiner.add(String.valueOf(obj));}}out.println(joiner.toString());}void println(char[] s) {out.println(String.valueOf(s));if (autoFlush) {out.flush();}}void println(int[] a) {StringJoiner joiner = new StringJoiner(" ");for (int i : a) {joiner.add(Integer.toString(i));}out.println(joiner);if (autoFlush) {out.flush();}}void println(long[] a) {StringJoiner joiner = new StringJoiner(" ");for (long i : a) {joiner.add(Long.toString(i));}out.println(joiner);if (autoFlush) {out.flush();}}void flush() {out.flush();}}