結果

問題 No.1041 直線大学
ユーザー face4
提出日時 2021-04-11 14:30:58
言語 Kotlin
(2.1.0)
結果
AC  
実行時間 396 ms / 2,000 ms
コード長 906 bytes
コンパイル時間 14,613 ms
コンパイル使用メモリ 442,944 KB
実行使用メモリ 55,444 KB
最終ジャッジ日時 2024-11-16 08:13:35
合計ジャッジ時間 29,080 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 37
権限があれば一括ダウンロードができます

ソースコード

diff #

import kotlin.math.abs
import kotlin.math.max

fun gcd(a:Int, b:Int): Int{
    return if(b==0) a else gcd(b, a%b)
}

fun main(){
    val n = readLine()!!.toInt()
    val points = Array(n){readLine()!!.split(" ").map{it.toInt()}}
    val f: (Int, Int) -> Pair<Int,Int> = { i, j ->
        var dx = points[j][0]-points[i][0]
        var dy = points[j][1]-points[i][1]
        with(gcd(abs(dx), abs(dy))){
            dx /= this
            dy /= this
        }
        Pair(dx, dy)
    }
    var answer = 0
    for(i in 0 until n){
        for(j in i+1 until n){
            var tmp = 2
            val (dx, dy) = f(i, j)
            for(k in 0 until n){
                if(k == i || k == j)    continue
                val (ddx, ddy) = f(i, k)
                if(ddx==dx && ddy==dy || -ddx==-dx && -ddy==-dy)    tmp++
            }
            answer = max(answer, tmp)
        }
    }
    println(answer)
}
0