Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Author : Saurav Kalsoor
- // Shifting Compartments - KOTLIN
- import java.util.*
- var sc = Scanner(System.`in`)
- fun main() {
- val n = sc.nextInt()
- val q = sc.nextInt()
- val str = sc.next()
- val l = ArrayList<Int>()
- val r = ArrayList<Int>()
- val k = ArrayList<Int>()
- for (i in 0 until q) {
- l.add(sc.nextInt())
- r.add(sc.nextInt())
- k.add(sc.nextInt())
- }
- println(shiftingCompartments(n, q, str, l, r, k))
- }
- fun shiftingCompartments(n: Int, q: Int, s: String, l: ArrayList<Int>, r: ArrayList<Int>, k: ArrayList<Int>): String? {
- val str = s.toCharArray()
- for (i in 0 until q) {
- cycle(str, l[i], r[i], k[i])
- }
- return String(str)
- }
- fun myReverse(str: CharArray, i: Int, j: Int) {
- var i = i
- var j = j
- while (i < j) {
- val temp = str[i]
- str[i] = str[j]
- str[j] = temp
- i++
- j--
- }
- }
- fun cycle(str: CharArray, l: Int, r: Int, k: Int) {
- var k = k
- val n = r - l + 1
- k %= n
- myReverse(str, l, l + n - k - 1)
- myReverse(str, l + n - k, r)
- myReverse(str, l, r)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement