View difference between Paste ID: mKE9C99m and 1pXhTvxz
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+
}