| Task: | Sukat |
| Sender: | EmuBird |
| Submission time: | 2024-01-20 15:54:01 +0200 |
| Language: | Java |
| Status: | READY |
| Result: | 65 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 28 |
| #2 | ACCEPTED | 37 |
| #3 | TIME LIMIT EXCEEDED | 0 |
| 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.16 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 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #16 | ACCEPTED | 0.20 s | 3 | details |
| #17 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #18 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #19 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #20 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #21 | WRONG ANSWER | 0.20 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();
int 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>();
List<Character> sortedKeys = Arrays.asList(map.keySet().toArray(new Character[0]));
sortedKeys.sort((a, b) -> map.get(b) - map.get(a));
for (char c : map.keySet().toArray(new Character[0])) {
if (!map.containsKey(c)) continue;
int selfCount = map.get(c);
while (selfCount < sum) {
char other = 'Ö'; // Ö=null
for (char otherCandidate : map.keySet()) {
if (otherCandidate == c) continue;
else {
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);
}
if (selfCount > 0) {
map.put(c, selfCount);
} else {
map.remove(c);
break;
}
}
}
// Try to resque the lonely
assert map.size() < 2;
if (map.size() > 0) {
char lastChar = map.keySet().iterator().next();
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 QA BS GX XJ ... |
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 ET ES ET ... |
Test 4
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| SSMRSSSSKR |
| correct output |
|---|
| 4 SR SR SM SK |
| user output |
|---|
| 4 RS RS SK SM |
Test 5
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| BIIILIIRRL |
| correct output |
|---|
| 5 IR IL IR IL ... |
| user output |
|---|
| 5 IB IR RI IL ... |
Test 6
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| YYGEYTDSTY |
| correct output |
|---|
| 5 YT YT YS YG ... |
| user output |
|---|
| 5 YS YT YT 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 ZB ZC ZB ZC ... 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 HC HA HC ... Truncated |
Test 11
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| WNNFXQNODQFSQVQQPNLQNQNNVVNXHN... |
| correct output |
|---|
| 499 NQ NQ NQ NQ ... |
| user output |
|---|
| 499 NA ND NA ND ... Truncated |
Test 12
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| VGAHMMMXMMVXAAMMMOMMMXVMMMYMXT... |
| correct output |
|---|
| 500 MH MH MH MH ... |
| user output |
|---|
| 500 MA MC MA MC ... Truncated |
Test 13
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| KKKKUUAKKAUKKKKFKKSVKCWKKKCVOJ... |
| correct output |
|---|
| 500 KI KI KI KI ... |
| user output |
|---|
| 500 KA KB KA KB ... Truncated |
Test 14
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV... |
| correct output |
|---|
| 100 VP VP VP VP ... |
| user output |
|---|
| 100 VE VG VE VJ ... Truncated |
Test 15
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| FKKJJBWTSFCDEKFPOKIPWZSVKHACMC... |
| correct output |
|---|
| 100000 CK CK CK CK ... |
| user output |
|---|
| (empty) |
Test 16
Group: 3
Verdict: ACCEPTED
| input |
|---|
| RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 17
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| WVKKVVADNVCVKLVYVVZVKVCTNKVLVV... |
| correct output |
|---|
| 99925 VC VC VC VC ... |
| user output |
|---|
| (empty) |
Test 18
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| BBBBBDNXDZQXBBYBBWBSBTMADXBBVZ... |
| correct output |
|---|
| 99999 BE BE BE BE ... |
| user output |
|---|
| (empty) |
Test 19
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| FBRDPLUMLZMLLLUFUCLEMCMULLZLFL... |
| correct output |
|---|
| 100000 LU LU LU LU ... |
| user output |
|---|
| (empty) |
Test 20
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| UUBUBUTUJSLUVBUXTUUMUXUXTMXUXS... |
| correct output |
|---|
| 100000 UX UX UX UX ... |
| user output |
|---|
| (empty) |
Test 21
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| PPPPPPPPPPEPPPPPPPPPPBOPPPPPPP... |
| correct output |
|---|
| 20000 PB PB PB PB ... |
| user output |
|---|
| 0 |
