Submission #71329018


Source Code Expand

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        FastScanner in = new FastScanner();
        PrintWriter out = new PrintWriter(System.out);

        try {
            String tLine = in.next();
            if (tLine == null) return;
            int T = Integer.parseInt(tLine);

            while (T-- > 0) {
                String nLine = in.next();
                if (nLine == null) break;
                int N = Integer.parseInt(nLine);
                
                String[] s = new String[N];
                for (int i = 0; i < N; i++) {
                    s[i] = in.next();
                }

                
                Arrays.sort(s, (s1, s2) -> {
                    int len1 = s1.length();
                    int len2 = s2.length();
                    int total = len1 + len2;
                    for (int k = 0; k < total; k++) {
                        char c1 = (k < len1) ? s1.charAt(k) : s2.charAt(k - len1);
                        char c2 = (k < len2) ? s2.charAt(k) : s1.charAt(k - len2);
                        if (c1 != c2) return c1 - c2;
                    }
                    return 0;
                });

                
                boolean duplicateFound = false;
                for (int i = 0; i < N - 1; i++) {
                    if (isCommutative(s[i], s[i+1])) {
                        duplicateFound = true;
                        break;
                    }
                }

                
                if (!duplicateFound) {
                    String temp = s[N - 1];
                    s[N - 1] = s[N - 2];
                    s[N - 2] = temp;
                }

                StringBuilder sb = new StringBuilder();
                for (String str : s) sb.append(str);
                out.println(sb);
            }
        } catch (Exception e) {
        }
        
        out.flush();
    }

    // Optimized helper to check s1 + s2 == s2 + s1 without creating new Strings
    private static boolean isCommutative(String s1, String s2) {
        int l1 = s1.length();
        int l2 = s2.length();
        int total = l1 + l2;
        for (int k = 0; k < total; k++) {
            char c1 = (k < l1) ? s1.charAt(k) : s2.charAt(k - l1);
            char c2 = (k < l2) ? s2.charAt(k) : s1.charAt(k - l2);
            if (c1 != c2) return false;
        }
        return true;
    }

    static class FastScanner {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer("");

        String next() {
            while (!st.hasMoreTokens()) {
                try {
                    String line = br.readLine();
                    if (line == null) return null;
                    st = new StringTokenizer(line);
                } catch (IOException e) {
                    return null;
                }
            }
            return st.nextToken();
        }
    }
}

Submission Info

Submission Time
Task F - Concat (2nd)
User addy
Language Java24 (OpenJDK 24.0.2)
Score 0
Code Size 3079 Byte
Status WA
Exec Time 700 ms
Memory 79800 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 575
Status
AC × 1
AC × 80
WA × 21
Set Name Test Cases
Sample sample_01.txt
All killer_01.txt, killer_02.txt, killer_03.txt, killer_04.txt, killer_05.txt, killer_06.txt, killer_07.txt, killer_08.txt, killer_09.txt, killer_10.txt, killer_11.txt, killer_12.txt, killer_13.txt, killer_14.txt, killer_15.txt, killer_16.txt, killer_17.txt, killer_18.txt, killer_19.txt, killer_20.txt, sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, test_70.txt, test_71.txt, test_72.txt, test_73.txt, test_74.txt, test_75.txt, test_76.txt, test_77.txt, test_78.txt, test_79.txt, test_80.txt
Case Name Status Exec Time Memory
killer_01.txt AC 271 ms 76808 KiB
killer_02.txt AC 277 ms 76876 KiB
killer_03.txt AC 229 ms 76420 KiB
killer_04.txt AC 209 ms 76272 KiB
killer_05.txt AC 224 ms 64584 KiB
killer_06.txt AC 241 ms 77080 KiB
killer_07.txt AC 186 ms 65752 KiB
killer_08.txt AC 301 ms 78124 KiB
killer_09.txt AC 239 ms 78536 KiB
killer_10.txt AC 203 ms 65196 KiB
killer_11.txt AC 226 ms 51760 KiB
killer_12.txt AC 171 ms 52040 KiB
killer_13.txt AC 280 ms 64692 KiB
killer_14.txt AC 206 ms 64668 KiB
killer_15.txt AC 296 ms 76836 KiB
killer_16.txt AC 241 ms 76852 KiB
killer_17.txt AC 519 ms 79800 KiB
killer_18.txt AC 700 ms 79056 KiB
killer_19.txt AC 486 ms 79400 KiB
killer_20.txt AC 645 ms 78972 KiB
sample_01.txt AC 43 ms 38596 KiB
test_01.txt AC 204 ms 63752 KiB
test_02.txt WA 265 ms 65092 KiB
test_03.txt WA 232 ms 58716 KiB
test_04.txt WA 244 ms 60108 KiB
test_05.txt WA 251 ms 60716 KiB
test_06.txt WA 241 ms 59704 KiB
test_07.txt WA 234 ms 60108 KiB
test_08.txt WA 237 ms 59844 KiB
test_09.txt WA 231 ms 59780 KiB
test_10.txt WA 236 ms 65736 KiB
test_11.txt AC 150 ms 47472 KiB
test_12.txt AC 241 ms 55132 KiB
test_13.txt AC 273 ms 58364 KiB
test_14.txt AC 289 ms 60968 KiB
test_15.txt AC 318 ms 67900 KiB
test_16.txt AC 327 ms 68168 KiB
test_17.txt AC 389 ms 68876 KiB
test_18.txt AC 347 ms 68972 KiB
test_19.txt AC 368 ms 68744 KiB
test_20.txt AC 377 ms 68452 KiB
test_21.txt AC 156 ms 47108 KiB
test_22.txt AC 209 ms 54100 KiB
test_23.txt AC 280 ms 58124 KiB
test_24.txt AC 284 ms 61432 KiB
test_25.txt AC 297 ms 68128 KiB
test_26.txt AC 336 ms 68116 KiB
test_27.txt AC 344 ms 68888 KiB
test_28.txt AC 356 ms 68744 KiB
test_29.txt AC 357 ms 68960 KiB
test_30.txt AC 380 ms 69020 KiB
test_31.txt AC 115 ms 47300 KiB
test_32.txt AC 125 ms 48168 KiB
test_33.txt AC 115 ms 49932 KiB
test_34.txt AC 118 ms 49704 KiB
test_35.txt AC 110 ms 49332 KiB
test_36.txt AC 126 ms 49028 KiB
test_37.txt AC 130 ms 49060 KiB
test_38.txt AC 130 ms 48888 KiB
test_39.txt AC 134 ms 46696 KiB
test_40.txt AC 124 ms 46500 KiB
test_41.txt AC 174 ms 48808 KiB
test_42.txt AC 169 ms 48424 KiB
test_43.txt AC 198 ms 52424 KiB
test_44.txt AC 220 ms 52676 KiB
test_45.txt AC 632 ms 78980 KiB
test_46.txt AC 592 ms 78492 KiB
test_47.txt AC 579 ms 78588 KiB
test_48.txt AC 561 ms 78776 KiB
test_49.txt AC 632 ms 78628 KiB
test_50.txt AC 592 ms 78716 KiB
test_51.txt AC 132 ms 47424 KiB
test_52.txt AC 136 ms 47908 KiB
test_53.txt AC 128 ms 47404 KiB
test_54.txt AC 136 ms 47528 KiB
test_55.txt AC 155 ms 49276 KiB
test_56.txt AC 170 ms 50636 KiB
test_57.txt AC 156 ms 49740 KiB
test_58.txt AC 152 ms 49724 KiB
test_59.txt AC 149 ms 46304 KiB
test_60.txt AC 179 ms 46732 KiB
test_61.txt AC 163 ms 46468 KiB
test_62.txt AC 149 ms 46528 KiB
test_63.txt AC 441 ms 68844 KiB
test_64.txt AC 566 ms 69080 KiB
test_65.txt AC 555 ms 69604 KiB
test_66.txt AC 518 ms 69728 KiB
test_67.txt WA 130 ms 49272 KiB
test_68.txt WA 133 ms 48692 KiB
test_69.txt WA 164 ms 50052 KiB
test_70.txt WA 132 ms 50324 KiB
test_71.txt WA 160 ms 49928 KiB
test_72.txt WA 136 ms 50428 KiB
test_73.txt WA 155 ms 50356 KiB
test_74.txt WA 139 ms 50556 KiB
test_75.txt WA 139 ms 50084 KiB
test_76.txt WA 141 ms 50716 KiB
test_77.txt WA 146 ms 47460 KiB
test_78.txt WA 153 ms 48140 KiB
test_79.txt AC 114 ms 46436 KiB
test_80.txt AC 116 ms 48072 KiB