結果
問題 |
No.2490 Escalator
|
ユーザー |
![]() |
提出日時 | 2025-04-21 20:01:55 |
言語 | Java (openjdk 23) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,415 bytes |
コンパイル時間 | 2,609 ms |
コンパイル使用メモリ | 79,544 KB |
実行使用メモリ | 83,696 KB |
最終ジャッジ日時 | 2025-04-21 20:02:36 |
合計ジャッジ時間 | 40,900 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 62 WA * 9 TLE * 1 -- * 1 |
ソースコード
import java.util.*; public class Main { static boolean check(int[] S, int N) { int size = S.length; int[][] R = new int[size][2]; int i = 0, j = 0; while (i < size) { while (i-j >= 0 && i+j < size && ((S[i-j] == S[i+j]) || (S[i-j] == -1) || (S[i+j] == -1))) { j++; } R[i][0] = j; int k = 1; while (i-k >= 0 && k+R[i-k][0] < j) { R[i+k][0] = R[i-k][0]; ++k; } i += k; j -= k; } i = 0; j = 0; while (i < size) { while (i-j >= 0 && i+j+1 < size && ((S[i-j] == S[i+j+1]) || (S[i-j] == -1) || (S[i+j+1] == -1))) { j++; } R[i][1] = j; int k = 1; while (i-k >= 0 && k+R[i-k][1] < j) { R[i+k+1][1] = R[i-k][1]; ++k; } i += k; j = 0; } for(int k=0; k<size; k++) { if((2*R[k][0]-1)>N || (2*R[k][1])>N) { return true; } } return false; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] A = new int[2*N]; for (int i = 0; i < 2*N; i++) { A[i] = sc.nextInt(); } int[] AA = new int[4*N]; for (int i = 0; i < 2*N; i++) { AA[i] = A[i]; AA[i + 2*N] = A[i]; } if(check(AA, N)) { System.out.println("Yes"); } else { System.out.println("No"); } } }