結果
| 問題 | No.343 手抜き工事のプロ |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-02-12 23:58:55 |
| 言語 | Kotlin (2.3.20) |
| 結果 |
AC
|
| 実行時間 | 303 ms / 2,000 ms |
| コード長 | 2,412 bytes |
| 記録 | |
| コンパイル時間 | 10,453 ms |
| コンパイル使用メモリ | 484,924 KB |
| 実行使用メモリ | 71,812 KB |
| 最終ジャッジ日時 | 2026-05-14 07:30:31 |
| 合計ジャッジ時間 | 16,269 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 27 |
ソースコード
import java.util.regex.Matcher
import java.util.regex.Pattern
fun main(args: Array<String>) {
fun readLineLongArray(): List<Long> {
val str = readLine() as String
val arrStr = str.split(" ")
val ret = arrStr.map { it.toLong() }
return ret
}
fun readLineLong(): Long {
val str = readLine() as String
return str.toLong()
}
fun readLineInt(): Int {
val str = readLine() as String
return str.toInt()
}
fun readLineIntArray() : List<Int> {
val str = readLine() as String
val arrStr = str.split(" ")
val ret = arrStr.map { it.toInt() }
return ret
}
fun readLineDoubleArray(): List<Double> {
val str = readLine() as String
val arrStr = str.split(" ")
val ret = arrStr.map { it.toDouble() }
return ret
}
fun readLineDouble() : Double {
val str = readLine() as String
return str.toDouble()
}
fun readLineString() : String {
return readLine() as String
}
// fun readLineStringArray(): List<String> {
// val str = readLine() as String
// val arrStr = str.split(" ")
// return arrStr
// }
val n = readLineInt()
if (n == 1) {
println(0)
return
}
val l = readLineInt()
var ave = 0.toDouble()
var aveList = Array(n-1,{0.toDouble()})
var list = arrayListOf<Int>(0)
for (i in 1..(n-1)) {
val tmp = readLineInt()
val bf = list.last()
if (Math.abs(tmp-bf) >= l) {
print(-1)
return
}
list.add(tmp)
// ave += tmp
}
var tmpS = 0.toDouble()
for (i in (aveList.size) downTo 1) {
// for (j in (i+1)..(n-1)) {
// aveList[i] += list[j]
// }
tmpS += list[i]
aveList[i-1] = tmpS
}
for (i in 0..(aveList.size-1)) {
aveList[i] += (l * (n-i-1)).toDouble() / 2.toDouble()
aveList[i] /= n-i-1
}
// ave += (l * n).toDouble() / 2.toDouble()
// ave /= n
// println(ave)
// for (item in aveList) {
// println(item)
// }
var count = 0
for (i in 0..(n-2)) {
if (list[i] < aveList[i] && aveList[i] < (list[i]+l)
&& list[i+1] < aveList[i] && aveList[i] < (list[i+1]+l)) {
} else {
count++
}
}
print(count)
}