Task: | Kasat |
Sender: | |
Submission time: | 2015-09-12 00:42:12 +0300 |
Language: | Java |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 21 |
#2 | ACCEPTED | 33 |
#3 | ACCEPTED | 46 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.33 s | 1 | details |
#2 | ACCEPTED | 0.34 s | 2 | details |
#3 | ACCEPTED | 0.34 s | 3 | details |
Code
//package putka.pkg3.pkg1; import java.util.Arrays; import java.util.Scanner; /** * * @author Adreno */ public class Putka31 { /** * @param args the command line arguments */ public static void main(String[] args) { Scanner input = new Scanner(System.in); int t = input.nextInt(); long[] abc = new long[3]; for (int i=0; i<t; i++) { abc[0] = input.nextLong(); abc[1] = input.nextLong(); abc[2] = input.nextLong(); long n = input.nextLong(); System.out.println(pelaa(abc, n)); } } private static String pelaa(long[] abc, long n) { while (n > 0) { sort(abc); //System.out.println(Arrays.toString(abc)); if (abc[0] == abc[1] && abc[1] >= (abc[2] - 1)) break; if ((abc[0]+1) >= abc[1] && abc[1] == abc[2]) break; long moves = Math.min(abc[2] - abc[0], abc[2] - abc[1]); moves = Math.min(abc[1] - abc[0], moves); moves = Math.min(n, moves); if (moves > 0) { abc[0] = abc[0] += moves; abc[2] = abc[2] -= moves; } else { moves = (abc[2] - abc[0]) * 5 / 10; moves = Math.min(moves, n); if (moves == 0) { abc[0]++; abc[2]--; moves = 1; } else if (abc[1] > abc[0]) { // case 388 abc[0] += moves; abc[1] -= moves/2; abc[2] -= moves/2; if ((moves/2)*2 < moves) abc[2]--; } else { // case 338 //System.out.println("moves=" +moves + ", moves/2=" + (moves/2)); abc[2] -= moves; abc[1] += moves/2; abc[0] += moves/2; if ((moves/2)*2 < moves) abc[0]++; } } n -= moves; } // a==b==c if (abc[0] == abc[1] && abc[1] == abc[2]) { if (n % 2 != 0) { abc[0]++; abc[2]--; sort(abc); } return abc[0] + " " + abc[1] + " " + abc[2]; } // a==b==(c-1) sort(abc); return abc[0] + " " + abc[1] + " " + abc[2]; } private static void sort(long[] t) { if (t[1] < t[0]) { long apu = t[0]; t[0] = t[1]; t[1] = apu; } if (t[2] < t[1]) { long apu = t[1]; t[1] = t[2]; t[2] = apu; } if (t[1] < t[0]) { long apu = t[0]; t[0] = t[1]; t[1] = apu; } } }
Test details
Test 1
Group: 1
Verdict: ACCEPTED
input |
---|
1000 7 69 64 45 37 5 30 81 50 49 37 38 46 37 100 6 ... |
correct output |
---|
46 47 47 24 24 24 45 45 46 43 46 94 32 32 33 ... |
user output |
---|
46 47 47 24 24 24 45 45 46 43 46 94 32 32 33 ... |
Test 2
Group: 2
Verdict: ACCEPTED
input |
---|
1000 19 13 88 978977859 67 57 39 960003440 81 16 67 971611942 92 96 2 957979201 ... |
correct output |
---|
39 40 41 54 54 55 54 55 55 63 63 64 36 37 38 ... |
user output |
---|
39 40 41 54 54 55 54 55 55 63 63 64 36 37 38 ... |
Test 3
Group: 3
Verdict: ACCEPTED
input |
---|
1000 211358104 753479603 549127067 ... |
correct output |
---|
504654924 504654925 504654925 589019272 589019272 589019273 101309993 101309994 101309994 436205296 436205297 436205298 351062567 351062568 351062568 ... |
user output |
---|
504654924 504654925 504654925 589019272 589019272 589019273 101309993 101309994 101309994 436205296 436205297 436205298 351062567 351062568 351062568 ... |