SHOW:
|
|
- or go back to the newest paste.
1 | // Author : Saurav Kalsoor | |
2 | // Game with Thor and Loki - JAVA | |
3 | ||
4 | - | import java.util.*; |
4 | + | import java.util.* |
5 | import java.lang.* | |
6 | - | public class Test { |
6 | + | |
7 | - | |
7 | + | var sc: Scanner = Scanner(System.`in`) |
8 | - | static Scanner sc = new Scanner(System.in); |
8 | + | |
9 | - | public static void main(String[] args) { |
9 | + | fun main() { |
10 | - | int n = sc.nextInt(); |
10 | + | val n: Int = sc.nextInt() |
11 | val arr: ArrayList<Int> = ArrayList<Int>() | |
12 | - | ArrayList<Integer> arr = new ArrayList<>(); |
12 | + | for (i in 0 until n) { |
13 | val input: Int = sc.nextInt() | |
14 | - | for(int i=0; i < n; i++) { |
14 | + | arr.add(input) |
15 | - | int input = sc.nextInt(); |
15 | + | |
16 | - | arr.add(input); |
16 | + | gameWithThorAndLoki(arr, n) |
17 | - | } |
17 | + | |
18 | ||
19 | - | gameWithThorAndLoki(arr, n); |
19 | + | fun gameWithThorAndLoki(arr: ArrayList<Int>, n: Int) { |
20 | val start = 0 | |
21 | val end = n - 1 | |
22 | val isThorsTurn = true | |
23 | - | public static void gameWithThorAndLoki(ArrayList<Integer> arr, int n){ |
23 | + | val res: ArrayList<Int> = recurr(arr, start, end, isThorsTurn) |
24 | - | int start = 0, end = n - 1; |
24 | + | println(res.get(0).toString() + " " + res.get(1)) |
25 | - | boolean isThorsTurn = true; |
25 | + | |
26 | - | |
26 | + | |
27 | - | ArrayList<Integer> res = recurr(arr, start, end, isThorsTurn); |
27 | + | fun recurr(arr: ArrayList<Int>, start: Int, end: Int, isThorsTurn: Boolean) : ArrayList<Int> { |
28 | var start = start | |
29 | - | System.out.println(res.get(0) + " " + res.get(1)); |
29 | + | var end = end |
30 | if (start > end) { | |
31 | val res: ArrayList<Int> = ArrayList<Int>() | |
32 | - | public static ArrayList<Integer> recurr(ArrayList<Integer> arr, int start, int end, boolean isThorsTurn){ |
32 | + | res.add(0) |
33 | - | if(start > end){ |
33 | + | res.add(0) |
34 | - | ArrayList<Integer> res = new ArrayList<Integer>(); |
34 | + | return res |
35 | - | res.add(0); |
35 | + | |
36 | - | res.add(0); |
36 | + | val left: Int = arr.get(start) |
37 | - | return res; |
37 | + | val right: Int = arr.get(end) |
38 | - | } |
38 | + | var currThor = 0 |
39 | var currLoki = 0 | |
40 | - | int left = arr.get(start); |
40 | + | if (isThorsTurn) { |
41 | - | int right = arr.get(end); |
41 | + | currThor = Math.max(left, right) |
42 | - | int currThor = 0, currLoki = 0; |
42 | + | currLoki = Math.min(left, right) |
43 | } else { | |
44 | - | if(isThorsTurn){ |
44 | + | currLoki = Math.max(left, right) |
45 | - | currThor = Math.max(left, right); |
45 | + | currThor = Math.min(left, right) |
46 | - | currLoki = Math.min(left, right); |
46 | + | |
47 | - | }else{ |
47 | + | start++ |
48 | - | currLoki = Math.max(left, right); |
48 | + | end-- |
49 | - | currThor = Math.min(left, right); |
49 | + | val res: ArrayList<Int> = recurr(arr, start, end, !isThorsTurn) |
50 | - | } |
50 | + | res.set(0, res.get(0) + currThor) |
51 | res.set(1, res.get(1) + currLoki) | |
52 | - | start++; |
52 | + | return res |
53 | - | end--; |
53 | + | |
54 | - | ArrayList<Integer> res = recurr(arr, start, end, !isThorsTurn); |
54 | + | |
55 | ||
56 | - | res.set(0, res.get(0) + currThor); |
56 | + |