結果
| 問題 |
No.1707 Simple Range Reverse Problem
|
| コンテスト | |
| ユーザー |
ripity
|
| 提出日時 | 2021-11-07 20:27:34 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 235 ms / 2,000 ms |
| コード長 | 1,198 bytes |
| コンパイル時間 | 2,411 ms |
| コンパイル使用メモリ | 80,004 KB |
| 実行使用メモリ | 51,448 KB |
| 最終ジャッジ日時 | 2025-07-13 03:52:54 |
| 合計ジャッジ時間 | 7,856 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 19 |
ソースコード
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for( int t = 0; t < T; t++ ) {
int N = sc.nextInt();
int[] A = new int[2*N];
int[] X = new int[2*N];
boolean possible = false;
boolean first = true;
for( int i = 0; i < 2*N; i++ ) {
A[i] = sc.nextInt()-1;
X[i] = i%N;
if( A[i] != i%N ) first = false;
}
for( int i = 0; i < N; i++ ) {
rev(N,i,X);
boolean frag = true;
for( int j = 0; j < 2*N; j++ ) {
if( A[j] != X[j] ) frag = false;
}
if( frag ) possible = true;
rev(N,i,X);
}
System.out.println( possible||first ? "Yes" : "No" );
}
}
static void rev( int N, int k, int[] A ) {
for( int i = 0; i <= N/2; i++ ) {
int save = A[i+k];
A[i+k] = A[N+k-i];
A[N+k-i] = save;
}
}
}
ripity