SHOW:
|
|
- or go back to the newest paste.
1 | // Author : Saurav Kalsoor | |
2 | - | // Shifting Compartments - JAVA |
2 | + | // Shifting Compartments - KOTLIN |
3 | ||
4 | ||
5 | - | import java.util.*; |
5 | + | import java.util.* |
6 | - | |
6 | + | |
7 | - | public class Test { |
7 | + | var sc = Scanner(System.`in`) |
8 | - | |
8 | + | |
9 | - | static Scanner sc = new Scanner(System.in); |
9 | + | fun main() { |
10 | - | public static void main(String[] args) { |
10 | + | val n = sc.nextInt() |
11 | - | int n = sc.nextInt(); |
11 | + | val q = sc.nextInt() |
12 | - | int q = sc.nextInt(); |
12 | + | val str = sc.next() |
13 | val l = ArrayList<Int>() | |
14 | - | String str = sc.next(); |
14 | + | val r = ArrayList<Int>() |
15 | - | |
15 | + | val k = ArrayList<Int>() |
16 | - | ArrayList<Integer> l = new ArrayList<>(); |
16 | + | |
17 | - | ArrayList<Integer> r = new ArrayList<>(); |
17 | + | for (i in 0 until q) { |
18 | - | ArrayList<Integer> k = new ArrayList<>(); |
18 | + | l.add(sc.nextInt()) |
19 | - | |
19 | + | r.add(sc.nextInt()) |
20 | - | for(int i=0; i < q ;i++){ |
20 | + | k.add(sc.nextInt()) |
21 | - | l.add(sc.nextInt()); |
21 | + | } |
22 | - | r.add(sc.nextInt()); |
22 | + | println(shiftingCompartments(n, q, str, l, r, k)) |
23 | - | k.add(sc.nextInt()); |
23 | + | |
24 | - | } |
24 | + | |
25 | - | |
25 | + | fun shiftingCompartments(n: Int, q: Int, s: String, l: ArrayList<Int>, r: ArrayList<Int>, k: ArrayList<Int>): String? { |
26 | - | System.out.println(shiftingCompartments(n, q, str, l, r, k)); |
26 | + | val str = s.toCharArray() |
27 | - | } |
27 | + | for (i in 0 until q) { |
28 | - | |
28 | + | cycle(str, l[i], r[i], k[i]) |
29 | - | public static String shiftingCompartments(int n, int q, String s, ArrayList<Integer> l, ArrayList<Integer> r, ArrayList<Integer> k){ |
29 | + | } |
30 | - | char[] str = s.toCharArray(); |
30 | + | return String(str) |
31 | } | |
32 | - | for(int i=0; i < q; i++){ |
32 | + | |
33 | - | cycle(str, l.get(i), r.get(i), k.get(i)); |
33 | + | fun myReverse(str: CharArray, i: Int, j: Int) { |
34 | - | } |
34 | + | var i = i |
35 | var j = j | |
36 | - | return String.valueOf(str); |
36 | + | while (i < j) { |
37 | - | } |
37 | + | val temp = str[i] |
38 | str[i] = str[j] | |
39 | - | public static void myReverse(char[] str, int i, int j){ |
39 | + | str[j] = temp |
40 | - | while(i < j){ |
40 | + | i++ |
41 | - | char temp = str[i]; |
41 | + | j-- |
42 | - | str[i] = str[j]; |
42 | + | } |
43 | - | str[j] = temp; |
43 | + | |
44 | - | i++; |
44 | + | |
45 | - | j--; |
45 | + | fun cycle(str: CharArray, l: Int, r: Int, k: Int) { |
46 | - | } |
46 | + | var k = k |
47 | - | } |
47 | + | val n = r - l + 1 |
48 | - | |
48 | + | k %= n |
49 | - | public static void cycle(char[] str, int l, int r, int k){ |
49 | + | myReverse(str, l, l + n - k - 1) |
50 | - | int n = r-l+1; |
50 | + | myReverse(str, l + n - k, r) |
51 | - | k = k%n; |
51 | + | myReverse(str, l, r) |
52 | - | myReverse(str, l, l+n-k-1); |
52 | + | } |