on board: IntelliJ IDEA Community Edition 2020.1.1 x64
beautify: ctrl+alt+L
rename: shift+F6, press Enter
skip to specific line: ctrl+G
dulplicate current line: ctrl+D
delete current line: ctrl+X
codeforce round#646
import java.util.*
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
//val INF: Int = 1000000000
fun main() {
fun query(ixs: Iterable<Int>): Int {//参数为1..n
var num = 0
val joiner = StringJoiner(" ")//一个专门用来将里面元素输出成字符串的东西
for (ix in ixs) {
num++
joiner.add(ix.toString())
}
println("? $num $joiner")
return readLn().toInt()
}
val Case = readInt()
repeat(Case) {
val (n, k) = readInts()
val subsets = Array(k) {
val split = readLn().split(" ")//读入同一行多个整数,返回一个类似列表的东西
//println(split)
split.subList(1, split.size).map { it.toInt() }.toSet()//列表截取,将元素转化为整数
}
val maxx = query(1..n)
var l = 1
var r = n
while (r > l) {
val mid = (l + r) / 2
if (query(l..mid) == maxx) {
r = mid
} else {
l = mid + 1
}
}
val answer = IntArray(k) {
if (l in subsets[it]) query((1..n).toSet().minus(subsets[it])) else maxx//集合运算
}
println("! " + answer.joinToString (" "))
readLn()
}
}
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
//val INF: Int = 1000000000
fun main() {
val Case = 1
repeat(Case) {
val n = readInt()
val cost = LongArray(n + 1)
val init = IntArray(n + 1)
val goal = IntArray(n + 1)
val adj = Array(n + 1) { mutableListOf<Int>() }//保持读入顺序不变的set
for (i in 1..n) {
val (a, b, c) = readInts()
init[i] = b
goal[i] = c
cost[i] = a.toLong()
}
for (i in 1..n - 1) {
val (a, b) = readInts()
adj[a].add(b)
adj[b].add(a)
}
var answer = 0L
fun dfs(now: Int, fa: Int): Long {
var rem0 = 0L
var rem1 = 0L
if (init[now] != goal[now]) {
when (init[now]) {
0 -> rem0++
1 -> rem1++
}
}
for (to in adj[now]) if (to != fa) {
cost[to] = minOf(cost[to], cost[now])
val del = dfs(to, now)
if (del < 0) {
rem0 -= del
} else {
rem1 += del
}
}
answer += 2L * minOf(rem0, rem1) * cost[now]
return rem1 - rem0
}
if (dfs(1, 0) == 0L) {
println(answer)
} else {
println(-1)
}
}
}
kotlin heroes 4
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
//val INF: Int = 1000000000
fun main() {
var t = readInt()
for (testcase in 0 until t) {
var (n, m) = readInts()
var a = Array(m) {
var (x, y,z) = readInts()
struct(x-1,y-1,z)
}
var ans=Array(n){0}
fun solve() {
for (i in a.sortedByDescending{it.w}){
//println("${i.u},${i.v},${i.w}")
if (ans[i.u]==0) ans[i.u]=i.w
if (ans[i.v]==0) ans[i.v]=i.w
if (i.w!= minOf(ans[i.u],ans[i.v])){
println("NO")
return
}
}
println("YES")
println(ans.joinToString(" "))
}
solve()
}
}
class struct(val u: Int, val v: Int, val w: Int)
codeforces round #644
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
//val INF: Int = 1000000000
fun main() {
var t = readInt()
repeat(t) {
var (n,m) = readInts()
var a=Array(n){
var res=0L
for (c in readLn()){
res=res*2+(c-'0')
}
res
}
a.sortByDescending { it }
//a.forEach { println(it) }
var l=0L
var r=(1L shl m)-1
val TrueRank=(l+r-n)/2
var ans=TrueRank
while (l<=r){
var mid=(l+r)/2
var value=mid
for (x in a) if (x<mid) mid--
if (mid>TrueRank){
r=value-1
}
else if (mid<TrueRank){
l=value+1
}
else{
var flag=true
for (x in a) if (x==value){
flag=false
}
if (flag){
ans=value
break
}
else{
l=value+1
}
}
}
fun printX(L:Long,m:Int){
if (m==0) return
printX(L/2,m-1)
print(L%2)
}
printX(ans,m)
println()
}
}
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
//val INF: Int = 1000000000
fun main() {
var t = readInt()
repeat(t) {
var (n,m,a,b) =
readInts()
if (n*a!=m*b){
println("NO")
}else{
println("YES")
var ans=Array(n){Array(m){0} }
var pos=0
for (i in 0 until n){
(0..a-1).map{it->(it+pos)%m}.forEach{ans[i][it]=1}
pos=(pos+a)%m
}
(0..(n-1)).forEach{ println(ans[it].joinToString ( "" )) }
}
}
}
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
//val INF: Int = 1000000000
fun main() {
var t = readInt()
repeat(t) {
var (n, m) = readInts()
//var a=Array<String>(n,{ readLn() })
var a = Array(n) { readLn() }
fun solve(): String {
fun check(test: String): Boolean {
for (i in 0 until n) {
var num = 0
for (j in 0 until m) {
if (a[i][j] != test[j]) num++
}
if (num > 1) return false
}
return true
}
for (i in 0 until m) {
for (j in 0 until 26) {
val c = ('a' + j).toChar()
var new = a[0].substring(0, i) + c + a[0].substring(i + 1, m)
if (check(new)) {
return new
}
}
}
return "-1"
}
println(solve())
}
}
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
//val INF: Int = 1000000000
/*
fun main() {
var t = readInt()
repeat(t) {
var n=readInt()
var a=Array(n){readLn().map{it=='1'}.toBooleanArray()}
fun check():Boolean{
for (i in 0 until n-1){
for (j in 0 until n-1){
if (a[i][j]&&(!(a[i][j+1]||a[i+1][j]))) return false
}
}
return true
}
println(if (check()) "YES" else "NO")
}
}
*/
fun main() {
var t = readInt()
repeat(t) {
var n=readInt()
var a=Array(n){readLn()}
fun check():Boolean{
for (i in 0 until n-1){
for (j in 0 until n-1){
if (a[i][j]=='1'&&(!(a[i][j+1]=='1'||a[i+1][j]=='1'))) return false
}
}
return true
}
if (check()){
println("YES")
}else{
println("NO")
}
}
}
codeforces round #643
import kotlin.math.min
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
val INF: Int = 1000000000
fun main() {
val t = 1
repeat(t) {
var (N, A, R, M) = readInts()
var T = min(A + R, M)
var a = readInts()
val f: (Int) -> Long = { H ->
var add = 0L
var rem = 0L
a.forEach {
if (H > it) add += (H - it)
else rem += (it - H)
}
var tran = min(add, rem)
T * tran + (add - tran) * A + (rem - tran) * R
}
var l = a.min()!!
var r = a.max()!!
var ans: Long = 1L * INF * INF
while (l <= r) {
var mid = (l + r) / 2
var left = f(mid)
var right = f(mid + 1)
ans = min(ans, left)
ans = min(ans, right)
if (right - left > 0) {
r = mid - 1
} else {
l = mid + 1
}
}
println(ans)
}
}
import java.lang.StringBuilder
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
//val INF: Int = 1000000000
fun main() {
val t=1
repeat(t) {
var (n,s) = readInts()
val ans = StringBuilder()
repeat(n-1){ ans.append("1 ")}
var final = s-(n-1)
ans.append(final.toString())
if (final-1>(n-1)){
println("YES")
println(ans)
println(final-1)
}else{
println("NO")
}
}
}
import kotlin.math.max
import kotlin.math.min
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
val INF: Long = 1000000000
fun main() {
var t = readInt()
repeat(t) {
var (a,k) = readLongs()
for (i in 2..k){
var tmp=a.toString().map{it.toString().toInt()}
var mul=(tmp.min()?:0)*(tmp.max()!!)
if (mul==0) break
a+=mul
}
println(a)
}
}
Kotlin Heroes: Episode 2
A
withindex, tosortedset, take, jointostring
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
fun main() {
val t = 1
repeat(t) {
var n = readLine()!!.toInt()
val a = readInts().withIndex().toSortedSet(compareBy { it.value })
if (a.size < 3) {
println("-1 -1 -1")
} else {
println(a.take(3).joinToString(" ") { (it.index + 1).toString() })
}
}
}
Kotlin Heroes: Episode 3
B
// list, ?=, flatMap, firstornull
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
// var n = readLine()!!.toInt()
// var a = readLine()!!.split(" ").map({it.toInt()}).toMutableList()
val INF: Int = 1000000000
fun main() {
var t = readInt()
repeat(t) {
var n = readLine()!!.toInt()
val segments = List(n) { readInts() }
val toTry = segments.flatMap { listOf(it[0] - 1, it[0], it[1], it[1] + 1) }
println(toTry.firstOrNull { x ->
segments.count { it[0] <= x && x <= it[1] } == 1
} ?: -1)
}
}
C
// sort,very standard
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
private fun readArray() = readStrings().map { it.toInt() }.toIntArray() // list of ints
var INF = 1_000_000_000 + 10
fun main() {
var t = readInt()
while (t-- > 0) {
var n = readInt()
var a = readInts()
a.sorted()
var sum = 0
var minn = Pair(INF, 0)
for (i in a.indices) {
if (a[i] > 0) {
sum += a[i]
if (a[i] < minn.first)
minn = Pair(a[i], i)
}
if (a[i] < 0 && -a[i] < minn.first)
minn = Pair(-a[i], i)
}
println(sum - minn.first)
var ans = mutableListOf<Int>()
for (i in a.indices) {
if ((a[i] > 0 && i != minn.second) || (a[i] < 0 && i == minn.second))
ans.add(1)
else
ans.add(0)
}
println(ans.joinToString(""))
}
}
A
//class
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
fun main() {
var t = readInt()
repeat(t) {
var n = readInt()
println(n.round().convert())
}
}
fun Int.convert(): String {
return when {
this >= 1000000 -> {
"${this / 1000000}M"
}
this >= 1000 -> {
"${this / 1000}K"
}
else -> {
"$this"
}
}
}
fun Int.round(): Int {
return when {
this >= 1000000 -> {
(this + 500000) / 1000000 * 1000000
}
this >= 1000 -> {
(this + 500) / 1000 * 1000
}
else -> {
this
}
}
}
//import
import kotlin.math.roundToInt
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readLong() = readLn().toLong() // single long
private fun readDouble() = readLn().toDouble() // single double
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
private fun readLongs() = readStrings().map { it.toLong() } // list of longs
private fun readDoubles() = readStrings().map { it.toDouble() } // list of doubles
fun main() {
var t = readInt()
repeat(t) {
var n = readInt()
solve(n)
}
}
fun solve(n: Int) {
if (n >= 999500) {
println((n / 1000000.0).roundToInt().toString() + "M")
} else if (n >= 1000) {
println((n / 1000.0).roundToInt().toString() + "K")
} else println(n)
}