結果
問題 |
No.3183 Swap or Rotate
|
ユーザー |
![]() |
提出日時 | 2025-06-21 18:36:27 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 159 ms / 1,000 ms |
コード長 | 975 bytes |
コンパイル時間 | 3,952 ms |
コンパイル使用メモリ | 85,748 KB |
実行使用メモリ | 46,992 KB |
最終ジャッジ日時 | 2025-06-21 18:36:37 |
合計ジャッジ時間 | 7,400 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
package no3183_swap_or_rotate; import java.util.*; public class Main { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] a = new int[n]; int start = -1; for(int i = 0;i < n;i++) { a[i] = sc.nextInt(); if(a[i] == 0)start = i; }int rev = 0; for(int i = 0;i < n;i++) { for(int j = 0;j < i;j++) { if(a[(start + i) % n] < a[(start + j) % n])rev++; } }StringBuilder sb = new StringBuilder(); int zero_ind = 0; while(rev > 0) { while(a[(zero_ind + 1) % n] == 0 || a[zero_ind] < a[(zero_ind + 1) % n]) { sb.append('R'); zero_ind++; zero_ind %= n; }swap(zero_ind,(zero_ind + 1) % n,a); sb.append('S'); rev--; }while(a[(zero_ind) % n] != 0) { zero_ind++; sb.append('R'); }System.out.println(sb); }public static void swap(int a,int b,int[] p) { int tmp = p[a]; p[a] = p[b]; p[b] = tmp; } }