-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path14888.kt
52 lines (46 loc) · 1.34 KB
/
14888.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import java.io.*
var max = -1000000000
var min = 1000000000
val number = ArrayList<Int>()
fun main() {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val br = BufferedReader(InputStreamReader(System.`in`))
val n = br.readLine().toInt()
val operator = ArrayList<Char>()
number.addAll(br.readLine().split(" ").map {it.toInt()})
val input = br.readLine().split(" ").map {it.toInt()}
for(i in 0..3){
when(i){
0-> repeat(input[i]) {operator.add('+')}
1-> repeat(input[i]){operator.add('-')}
2-> repeat(input[i]){operator.add('*')}
3-> repeat(input[i]){operator.add('/')}
}
}
dfs(operator, "")
bw.write("$max\n$min")
bw.flush()
bw.close()
}
fun dfs(operator: ArrayList<Char>, operation : String) {
if(operator.size==0) chk(operation)
for(i in 0..operator.lastIndex){
val tmp = operator[i]
operator.removeAt(i)
dfs(operator, operation+tmp)
operator.add(i,tmp)
}
}
fun chk(operation: String){
var sum = number[0]
for(i in 0..operation.lastIndex){
when(operation[i]){
'+' -> sum += number[i+1]
'-' -> sum -= number[i+1]
'*' -> sum *= number[i+1]
'/' -> sum /= number[i+1]
}
}
if(sum>=max) max = sum
if(sum<min) min = sum
}