CSES - Putka Open 2015 – 1/6 - Results
Submission details
Task:Aita
Sender:
Submission time:2015-07-19 01:42:02 +0300
Language:Java
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED17
#2ACCEPTED28
#3ACCEPTED55
Test results
testverdicttimegroup
#1ACCEPTED0.25 s1details
#2ACCEPTED0.23 s1details
#3ACCEPTED0.23 s1details
#4ACCEPTED0.22 s1details
#5ACCEPTED0.22 s1details
#6ACCEPTED0.33 s2details
#7ACCEPTED0.34 s2details
#8ACCEPTED0.33 s2details
#9ACCEPTED0.35 s2details
#10ACCEPTED0.22 s2details
#11ACCEPTED0.33 s3details
#12ACCEPTED0.34 s3details
#13ACCEPTED0.35 s3details
#14ACCEPTED0.41 s3details
#15ACCEPTED0.35 s3details

Code

//package putka1.aita;

import java.util.Comparator;
import java.util.HashSet;
import java.util.Scanner;
import java.util.TreeSet;

/**
 *
 * @author Adreno
 */
public class Putka1Aita {

    public static int n;
    public static int k;
    public static StringBuilder j;
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        n = input.nextInt();
        k = input.nextInt();
        
        
        j = new StringBuilder("");
        HashSet<Integer> keskiVasen = new HashSet<>();
        HashSet<Integer> keskiOikea = new HashSet<>();
        int v = (n/2) + 1 - (k+1) / 2;
        int o = v + k;
        double middlePoint = 1.00 * n / 2 + 1;
        //System.out.println("midd" + middlePoint);
        for (int i=v+1; i<middlePoint; i++) {
            keskiVasen.add(i);
            //System.out.println("Lisätään keskivasempaan " + i);
        }
        int ekaOikeal = n/2 + 1;
        if (n % 2 != 0) ekaOikeal++;
        for (int i=ekaOikeal; i<o; i++) {
            keskiOikea.add(i);
            //System.out.println("Lisätään keskioikeaan " + i);
        }
        //System.out.println("v=" + v + ", o=" + o);
        
        int count = 0;
        boolean oikealtaVasemmalle = true;
        int viimesin = o; // jotta ensimmäinen siirto ois v
        while (true) {
            if (oikealtaVasemmalle) {
                if (keskiVasen.remove(viimesin-k)) {
                    j.append((viimesin-k) + " ");
                    viimesin = viimesin-k;
                } else {
                    if (v < 1) break;
                    j.append(v + " ");
                    viimesin = v;
                    v--;
                }
                oikealtaVasemmalle = false;
            } else {
                if (keskiOikea.remove(viimesin+k)) {
                    j.append((viimesin+k) + " ");
                    viimesin = viimesin+k;
                }
                else {
                    if (o > n) break;
                    j.append(o + " ");
                    viimesin = o;
                    o++;
                }
                oikealtaVasemmalle = true;
            }
            //System.out.println("SB: " + j);
            count++;
        }
        
        if (n % 2 != 0 && (viimesin - (n/2 + 1) >= k)) {
            j.append(n/2 + 1);
            count++;
        }
        
        if (count == n) System.out.println(j);
        else {
            v = n - k;
            o = n;
            j = new StringBuilder();
            count = 0;
            oikealtaVasemmalle = true;
            while (true) {
                if (oikealtaVasemmalle) {
                    if (v < 1) break;
                    j.append(v + " ");
                    v--;
                    oikealtaVasemmalle = false;
                } else {
                    j.append(o + " ");
                    o--;
                    oikealtaVasemmalle = true;
                }
                count++;
            }
            if (count == n) System.out.println(j);
            else System.out.println("QAQ");
        }
    }
    
}




//    public static void main(String[] args) {
//        Scanner input = new Scanner(System.in);
//        int n = input.nextInt();
//        int k = input.nextInt();
//        StringBuilder j = new StringBuilder("");
//        int alottaja = k;
//        int nykyinen = k;
//        int count = 0;
//        while (alottaja < 1+k) {
//            while (nykyinen <= n) {
//                j.append(nykyinen + " ");
//                nykyinen += k;
//                count++;
//            }
//            alottaja++;
//            nykyinen = alottaja;
//        }
//        alottaja = k;
//        while (alottaja > 1) {
//            alottaja--;
//            nykyinen = alottaja;
//            while (nykyinen <= n) {
//                j.append(nykyinen + " ");
//                nykyinen += k;
//                count++;
//            }
//        }
//        if (count < n) System.out.println("QAQ");
//        else System.out.println(j);
//    }

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
2 2

correct output
QAQ

user output
QAQ

Test 2

Group: 1

Verdict: ACCEPTED

input
3 2

correct output
QAQ

user output
QAQ

Test 3

Group: 1

Verdict: ACCEPTED

input
4 2

correct output
3 1 4 2 

user output
2 4 1 3 

Test 4

Group: 1

Verdict: ACCEPTED

input
7 4

correct output
QAQ

user output
QAQ

Test 5

Group: 1

Verdict: ACCEPTED

input
8 4

correct output
5 1 6 2 7 3 8 4 

user output
4 8 3 7 2 6 1 5 

Test 6

Group: 2

Verdict: ACCEPTED

input
80476 2

correct output
40239 1 40240 2 40241 3 40242 ...

user output
40238 40240 40237 40239 40236 ...

Test 7

Group: 2

Verdict: ACCEPTED

input
68652 2

correct output
34327 1 34328 2 34329 3 34330 ...

user output
34326 34328 34325 34327 34324 ...

Test 8

Group: 2

Verdict: ACCEPTED

input
62735 2

correct output
31368 1 31369 2 31370 3 31371 ...

user output
31367 31369 31366 31370 31368 ...

Test 9

Group: 2

Verdict: ACCEPTED

input
71954 2

correct output
35978 1 35979 2 35980 3 35981 ...

user output
35977 35979 35976 35978 35975 ...

Test 10

Group: 2

Verdict: ACCEPTED

input
4 2

correct output
3 1 4 2 

user output
2 4 1 3 

Test 11

Group: 3

Verdict: ACCEPTED

input
89814 3

correct output
44908 1 44909 2 44910 3 44911 ...

user output
44906 44909 44905 44908 44904 ...

Test 12

Group: 3

Verdict: ACCEPTED

input
91140 5

correct output
45571 1 45572 2 45573 3 45574 ...

user output
45568 45573 45567 45572 45566 ...

Test 13

Group: 3

Verdict: ACCEPTED

input
66703 16675

correct output
33352 1 33353 2 33354 3 33355 ...

user output
25014 41689 25013 41688 25012 ...

Test 14

Group: 3

Verdict: ACCEPTED

input
66666 33333

correct output
33334 1 33335 2 33336 3 33337 ...

user output
33333 66666 33332 66665 33331 ...

Test 15

Group: 3

Verdict: ACCEPTED

input
66666 33334

correct output
QAQ

user output
QAQ