結果

問題 No.8081 HQ9+
ユーザー Yu 212
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

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();
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0