Submission details
Task:Kolmijako
Sender:TapaniS
Submission time:2025-09-07 12:18:30 +0300
Language:Java
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED23
#2ACCEPTED42
#3ACCEPTED35
Test results
testverdicttimegroup
#1ACCEPTED0.18 s1, 2, 3details
#2ACCEPTED0.25 s2, 3details
#3ACCEPTED0.47 s3details

Code

import java.util.*;


public class kolmijako {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);

		int t = Integer.parseInt(input.nextLine());
		
		int[] ans = new int[t];
		int[] len = new int[t];
		
		for (int i = 0; i < t; i++) {
			
			int a = input.nextInt();
			len[i] = a;
			
		}
		
		input.close(); 
		
		
		for (int i = 0; i < t; i++) {	
		
			int a = len[i];
			
			if (a < 5) {
				 System.out.println("NO");
				continue;
			}
			
			
			int sum = a * (a+1) / 2;
		
			int remainder = sum % 3;
		
			if (remainder > 0) {
				System.out.println("NO");
				continue;
			}
			
			// calc here
			
			ans[i] = sum / 3;
								
			ArrayList<Integer> list1 = new ArrayList<>();
			ArrayList<Integer> list2 = new ArrayList<>();
			ArrayList<Integer> list3 = new ArrayList<>();
			
			for (int i2 = 1; i2 <= a; i2++) {
				list1.add(i2);
			}
			
			int rest2 = sum / 3;
			int rest3 = sum / 3;
			
			for (int i3 = list1.size() - 1; i3 >= 0; i3--) {
				
				int val = list1.get(i3);
				
				if ((val <= rest2) && (rest2 >0)) {
					list2.add(val);
					list1.remove(i3);
					rest2 = rest2 - val;
				}
				else if ((val <= rest3) && (rest3 >0)) {
					list3.add(val);
					list1.remove(i3);
					rest3 = rest3 - val;
				}
				
				if ((rest2 == 0) && (rest3 ==0)) {
					
					System.out.println("YES");
					
					System.out.println(list1.size());
					for (int i4 = 0; i4 < list1.size() - 1; i4++) {
						System.out.print(list1.get(i4) + " ");
					}
					System.out.println(list1.get(list1.size() - 1));
					
					System.out.println(list2.size());
					for (int i5 = list2.size() - 1; i5 > 0; i5--) {
						System.out.print(list2.get(i5) + " ");
					}
					System.out.println(list2.get(0));
					
					System.out.println(list3.size());
					for (int i6 = list3.size() - 1; i6 > 0; i6--) {
						System.out.print(list3.get(i6) + " ");
					}
					System.out.println(list3.get(0));
					
					
					break;
					} // found all ok
				
				if (i3 == 0) {System.out.println("NO");}

			}  // for i3 - one case end

		} // for i1 - all case end
		
		
    }  // main program
} // class

Test details

Test 1

Group: 1, 2, 3

Verdict: ACCEPTED

input
15
1
2
3
4
...

correct output
NO
NO
NO
NO
YES
...

user output
NO
NO
NO
NO
YES
...
Truncated

Test 2

Group: 2, 3

Verdict: ACCEPTED

input
100
1
2
3
4
...

correct output
NO
NO
NO
NO
YES
...

user output
NO
NO
NO
NO
YES
...
Truncated

Test 3

Group: 3

Verdict: ACCEPTED

input
100
564
895
546
980
...

correct output
YES
188
1 6 12 7 18 13 24 19 30 25 36 ...

user output
YES
325
1 2 3 4 5 6 7 8 9 10 11 12 13 ...
Truncated