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 | + |