Task: | Sukat |
Sender: | EmuBird |
Submission time: | 2024-01-20 22:57:16 +0200 |
Language: | Java |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 28 |
#2 | ACCEPTED | 37 |
#3 | ACCEPTED | 35 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.16 s | 1, 2, 3 | details |
#2 | ACCEPTED | 0.08 s | 1, 2, 3 | details |
#3 | ACCEPTED | 0.16 s | 1, 2, 3 | details |
#4 | ACCEPTED | 0.16 s | 1, 2, 3 | details |
#5 | ACCEPTED | 0.16 s | 1, 2, 3 | details |
#6 | ACCEPTED | 0.16 s | 1, 2, 3 | details |
#7 | ACCEPTED | 0.17 s | 1, 2, 3 | details |
#8 | ACCEPTED | 0.19 s | 2, 3 | details |
#9 | ACCEPTED | 0.08 s | 2, 3 | details |
#10 | ACCEPTED | 0.19 s | 2, 3 | details |
#11 | ACCEPTED | 0.19 s | 2, 3 | details |
#12 | ACCEPTED | 0.19 s | 2, 3 | details |
#13 | ACCEPTED | 0.19 s | 2, 3 | details |
#14 | ACCEPTED | 0.17 s | 2, 3 | details |
#15 | ACCEPTED | 0.92 s | 3 | details |
#16 | ACCEPTED | 0.20 s | 3 | details |
#17 | ACCEPTED | 0.92 s | 3 | details |
#18 | ACCEPTED | 0.95 s | 3 | details |
#19 | ACCEPTED | 0.92 s | 3 | details |
#20 | ACCEPTED | 0.94 s | 3 | details |
#21 | ACCEPTED | 0.56 s | 3 | details |
Code
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.List; public class Main { public static class Pair { public char a; public char b; public Pair(char a, char b) { this.a = a; this.b = b; } } public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String input = reader.readLine(); long sum = 0; HashMap<Character, Integer> map = new HashMap<Character, Integer>(); for (char c : input.toCharArray()) { int count = map.getOrDefault(c, 0) + 1; sum += count; map.put(c, count); } ArrayList<Pair> pairs = new ArrayList<Pair>(); ArrayList<Character> sortedKeys = new ArrayList<>(Arrays.asList(map.keySet().toArray(new Character[0]))); sortedKeys.sort((a, b) -> map.get(b) - map.get(a)); for (int i = 0; i < sortedKeys.size(); i++) { char c = sortedKeys.get(i); int selfCount = map.get(c); while (selfCount < sum) { int otherIndex = -1; char other = 'Ö'; // Ö=null for (int ib = 0; ib < sortedKeys.size(); ib++) { char otherCandidate = sortedKeys.get(ib); if (otherCandidate == c) continue; else { otherIndex = ib; other = otherCandidate; break; } } if (other == 'Ö') break; pairs.add(new Pair(c, other)); selfCount--; int otherCount = map.get(other) - 1; sum -= 2; if (otherCount > 0) { map.put(other, otherCount); } else { map.remove(other); sortedKeys.remove(otherIndex); } if (selfCount > 0) { map.put(c, selfCount); } else { map.remove(c); sortedKeys.remove(i); i--; break; } } } // Try to resque the lonely assert map.size() < 2; if (map.size() > 0) { char lastChar = sortedKeys.get(0); int count = map.get(lastChar); if (count > 1) { for (int i = 0; i < pairs.size(); i++) { Pair p = pairs.get(i); if (p.a == lastChar || p.b == lastChar) continue; pairs.set(i, new Pair(lastChar, p.a)); pairs.add(i + 1, new Pair(lastChar, p.b)); count -= 2; if (count <= 1) break; } } } System.out.println(pairs.size()); for (int i = 0; i < pairs.size(); i++) { Pair pair = pairs.get(i); System.out.println(Character.toString(pair.a) + Character.toString(pair.b)); } } }
Test details
Test 1
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
QBAXGXJZJS |
correct output |
---|
5 XJ ZX SQ JG ... |
user output |
---|
5 XJ XJ QA BS ... |
Test 2
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
SSSSSSSSSS |
correct output |
---|
0 |
user output |
---|
0 |
Test 3
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
SETTSESEEE |
correct output |
---|
5 ES ET ES ET ... |
user output |
---|
5 ES ES ES ET ... |
Test 4
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
SSMRSSSSKR |
correct output |
---|
4 SR SR SM SK |
user output |
---|
4 SR SR SK SM |
Test 5
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
BIIILIIRRL |
correct output |
---|
5 IR IL IR IL ... |
user output |
---|
5 IR IR IL IL ... |
Test 6
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
YYGEYTDSTY |
correct output |
---|
5 YT YT YS YG ... |
user output |
---|
5 YT YT YS YD ... |
Test 7
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
MMMMMMMMMN |
correct output |
---|
1 MN |
user output |
---|
1 MN |
Test 8
Group: 2, 3
Verdict: ACCEPTED
input |
---|
XQQZJQDDJOWXDFVQUIODDJIZIQDQIW... |
correct output |
---|
500 DQ DQ DQ DQ ... |
user output |
---|
500 DQ DQ DQ DQ ... Truncated |
Test 9
Group: 2, 3
Verdict: ACCEPTED
input |
---|
IIIIIIIIIIIIIIIIIIIIIIIIIIIIII... |
correct output |
---|
0 |
user output |
---|
0 |
Test 10
Group: 2, 3
Verdict: ACCEPTED
input |
---|
KEOHHYHHAIHLLHEKIHKAHHHHOHEHHE... |
correct output |
---|
493 HA HA HA HA ... |
user output |
---|
493 HA HA HA HA ... Truncated |
Test 11
Group: 2, 3
Verdict: ACCEPTED
input |
---|
WNNFXQNODQFSQVQQPNLQNQNNVVNXHN... |
correct output |
---|
499 NQ NQ NQ NQ ... |
user output |
---|
499 NQ NQ NQ NQ ... Truncated |
Test 12
Group: 2, 3
Verdict: ACCEPTED
input |
---|
VGAHMMMXMMVXAAMMMOMMMXVMMMYMXT... |
correct output |
---|
500 MH MH MH MH ... |
user output |
---|
500 MH MH MH MH ... Truncated |
Test 13
Group: 2, 3
Verdict: ACCEPTED
input |
---|
KKKKUUAKKAUKKKKFKKSVKCWKKKCVOJ... |
correct output |
---|
500 KI KI KI KI ... |
user output |
---|
500 YK YI KI KI ... Truncated |
Test 14
Group: 2, 3
Verdict: ACCEPTED
input |
---|
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV... |
correct output |
---|
100 VP VP VP VP ... |
user output |
---|
100 VP VP VP VP ... Truncated |
Test 15
Group: 3
Verdict: ACCEPTED
input |
---|
FKKJJBWTSFCDEKFPOKIPWZSVKHACMC... |
correct output |
---|
100000 CK CK CK CK ... |
user output |
---|
100000 XC XK XC XK ... Truncated |
Test 16
Group: 3
Verdict: ACCEPTED
input |
---|
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... |
correct output |
---|
0 |
user output |
---|
0 |
Test 17
Group: 3
Verdict: ACCEPTED
input |
---|
WVKKVVADNVCVKLVYVVZVKVCTNKVLVV... |
correct output |
---|
99925 VC VC VC VC ... |
user output |
---|
99925 VC VC VC VC ... Truncated |
Test 18
Group: 3
Verdict: ACCEPTED
input |
---|
BBBBBDNXDZQXBBYBBWBSBTMADXBBVZ... |
correct output |
---|
99999 BE BE BE BE ... |
user output |
---|
99999 BE BE BE BE ... Truncated |
Test 19
Group: 3
Verdict: ACCEPTED
input |
---|
FBRDPLUMLZMLLLUFUCLEMCMULLZLFL... |
correct output |
---|
100000 LU LU LU LU ... |
user output |
---|
100000 LU LU LU LU ... Truncated |
Test 20
Group: 3
Verdict: ACCEPTED
input |
---|
UUBUBUTUJSLUVBUXTUUMUXUXTMXUXS... |
correct output |
---|
100000 UX UX UX UX ... |
user output |
---|
100000 AU AX UX UX ... Truncated |
Test 21
Group: 3
Verdict: ACCEPTED
input |
---|
PPPPPPPPPPEPPPPPPPPPPBOPPPPPPP... |
correct output |
---|
20000 PB PB PB PB ... |
user output |
---|
20000 PB PB PB PB ... Truncated |