結果
問題 |
No.2490 Escalator
|
ユーザー |
![]() |
提出日時 | 2025-04-21 20:17:20 |
言語 | Java (openjdk 23) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,505 bytes |
コンパイル時間 | 2,500 ms |
コンパイル使用メモリ | 81,488 KB |
実行使用メモリ | 66,916 KB |
最終ジャッジ日時 | 2025-04-21 20:18:06 |
合計ジャッジ時間 | 43,222 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 3 |
other | WA * 71 TLE * 1 -- * 1 |
ソースコード
import java.util.*; public class Main { static boolean check(int[] S, int N) { int size = S.length; int[][] R = new int[2][size]; 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[0][i] = j; int k = 1; while (i-k >= 0 && k+R[0][i-k] < j) { R[0][i+k] = R[0][i-k]; ++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[1][i] = j; int k = 1; while (i-k >= 0 && k+R[1][i-k] < j) { R[1][i+k+1] = R[1][i-k]; ++k; } i += k; j = 0; } System.out.println(Arrays.toString(R[0])); System.out.println(Arrays.toString(R[1])); for(int k=0; k<size; k++) { if((2*R[0][k]-1)>N || (2*R[1][k])>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"); } } }