Less or Equal (Az veya Eşit)

Kotlin dili ile programcılık becerinizi geliştirmek için örnek problemleri çözmeye devam edilim. Bu yazıda ele alacağımız problem ve kodları aşağıdaki gibidir.

Problem

Bu uygulamada size n elemanlı bir dizi ve k tamsayısı verilir. 1≤x≤10^9 aralığında olmak şartıyla bir x sayısı bulunuz. Bu x sayısını bulma koşulu ise dizide bu sayıdan küçük veya eşit k adet sayı olmasıdır. Bu şartı sağlayan bir x sayısı yoksa ekrana -1 yazınız.

Giriş

Kullanıcı ilk satırda n ve k sayılarını girer. n dizinin eleman sayısını belirlemek için kullanılır. İkinci satırda ise n elemanlı dizinin elemanları aralarında boşluk olacak şekilde sisteme girilir.

Çıkış

1≤x≤10^9 aralığında olmak şartıyla bir x sayısı bulunuz. Bu x sayısını bulma koşulu ise dizide bu sayıdan küçük veya eşit k adet sayı olmasıdır. Bu şartı sağlayan bir x sayısı yoksa ekrana -1 yazınız.

Örnek

Giriş – 1
7 4
3 7 5 1 10 3 20

Çıkış -1
5

Giriş -2
7 2
3 7 5 1 10 3 20

Çıkış -2
-1

NOT: Birinci örnekte 7 elemanlı bir dizide kendisine eşit veya daha küçük 4 sayı olma şartını 5 sayısı sağlamaktadır. 5 sayısından küçük 3, 5, 1 ve 3 sayıları şartı sağlar. Bu örnekte 6 sayısı da cevap olarak kabul edilebilir. Çünkü 6 sayısı da şartı sağlar. Ama 7 sayısı şartı sağlamaz. Çünkü 7’den küçük veya eşit olan sayılar 3, 7, 5, 1 ve 3 olmak üzere 5 adet olup 4 değerinden büyüktür.

İkinci örnekte ise şartı sağlayan bir sayı olmadığından ekranda -1 değeri okunur.

fun readLn() = readLine()!!
fun readArr() = readLn().split(" ")
fun readToInt() = readArr().map { it.toInt() }

fun main(args: Array<String>) {

    var (n, k) = readToInt()
    var arr = readToInt() as ArrayList<Int>
    arr.sort()
    if (k <= n) {

        var x = 1
        var c = 0
        loop@ while (x <= arr[arr.size - 1]) {

            c = 0
            for (m in arr) {

                if (m <= x) {
                    c++
                }

                if (c == k && m==arr[arr.size-1]) {
                    c = x
                    break@loop
                }
            }
            if (c > k) {
                c = -1
                break@loop
            }

            x++
        }

            println(c)

    }
}


Örnek çıktı 1
Örnek çıktı 2

Kaynak: https://codeforces.com/contest/1212/problem/C

**Bana en büyük desteğiniz yazılarıma yorum yapmanız ve paylaşmanızdır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

eight + 8 =