/* package whatever; // don't place package name! */
import java.util.*;
/* Name of the class has to be "Main" only if the class is public. */
public class Main
{
static void printRLEDigits
(String input
) { Scanner sc = new Scanner(input);
int freq = 0;
int oldNum = 0;
boolean first = true;
out: while(sc.hasNext()) {
String s
= sc.
next(); // getting "number" delimited with whitespaces for (char c: s.toCharArray()) {
break out;
}
int i = c - '0';
if (i != oldNum || first) {
if (first)
first = false;
else // digit changed
System.
out.
printf("%dx%d.", freq, oldNum
); oldNum = i;
freq = 1;
} else {
freq++;
}
}
}
if (!first)
System.
out.
printf("%dx%d.%n", freq, oldNum
); else
System.
out.
println("No integer found"); sc.close();
}
static void printRLE
(String input
) { Scanner sc = new Scanner(input);
int freq = 0;
int oldNum = 0;
boolean first = true;
while(sc.hasNextInt()) {
int i = sc.nextInt();
if (i != oldNum || first) {
if (first)
first = false;
else // integer value changed
System.
out.
printf("%dx%d.", freq, oldNum
); oldNum = i;
freq = 1;
} else {
freq++;
}
}
if (!first)
System.
out.
printf("%dx%d.%n", freq, oldNum
); else
System.
out.
println("No integer found"); sc.close();
}
{
"",
"abc.",
"11 11 11",
"112 223",
"1 1 1\n7 7 2 2 1",
"1 1 1\n7 7 2 2 0 ",
"0 0 0",
};
System.
out.
println("test=[" + test
+ "]"); System.
out.
println("Numbers: "); printRLE(test);
System.
out.
println("Digits: "); printRLEDigits(test);
System.
out.
println("--------"); }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwoKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpwdWJsaWMgY2xhc3MgTWFpbgp7CglzdGF0aWMgdm9pZCBwcmludFJMRURpZ2l0cyhTdHJpbmcgaW5wdXQpIHsKCSAgICBTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoaW5wdXQpOwoJICAgIGludCBmcmVxID0gMDsKCSAgICBpbnQgb2xkTnVtID0gMDsKCSAgICBib29sZWFuIGZpcnN0ID0gdHJ1ZTsKCSAgICAgICAgCgkgICAgb3V0OiB3aGlsZShzYy5oYXNOZXh0KCkpIHsKCSAgICAgICAgICAgIAoJICAgICAgICBTdHJpbmcgcyA9IHNjLm5leHQoKTsgLy8gZ2V0dGluZyAibnVtYmVyIiBkZWxpbWl0ZWQgd2l0aCB3aGl0ZXNwYWNlcwoJICAgICAgICBmb3IgKGNoYXIgYzogcy50b0NoYXJBcnJheSgpKSB7CgkgICAgICAgICAgICBpZiAoIUNoYXJhY3Rlci5pc0RpZ2l0KGMpKSB7CgkgICAgICAgICAgICAgICAgYnJlYWsgb3V0OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaW50IGkgPSBjIC0gJzAnOwoJICAgICAgICAgICAgaWYgKGkgIT0gb2xkTnVtIHx8IGZpcnN0KSB7CgkgICAgICAgICAgICAgICAgaWYgKGZpcnN0KQoJICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOwoJICAgICAgICAgICAgICAgIGVsc2UgLy8gZGlnaXQgY2hhbmdlZAoJICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiJWR4JWQuIiwgZnJlcSwgb2xkTnVtKTsKCSAgICAgICAgICAgICAgICBvbGROdW0gPSBpOwoJICAgICAgICAgICAgICAgIGZyZXEgPSAxOwoJICAgICAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgICAgICBmcmVxKys7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9CgkgICAgaWYgKCFmaXJzdCkgICAgCgkgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCIlZHglZC4lbiIsIGZyZXEsIG9sZE51bSk7CgkgICAgZWxzZSAKCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJObyBpbnRlZ2VyIGZvdW5kIik7CgkgICAgc2MuY2xvc2UoKTsgICAgCgl9CgoJc3RhdGljIHZvaWQgcHJpbnRSTEUoU3RyaW5nIGlucHV0KSB7CgkgICAgU2Nhbm5lciBzYyA9IG5ldyBTY2FubmVyKGlucHV0KTsKCSAgICBpbnQgZnJlcSA9IDA7CgkgICAgaW50IG9sZE51bSA9IDA7CgkgICAgYm9vbGVhbiBmaXJzdCA9IHRydWU7CgkgICAgICAgIAoJICAgIHdoaWxlKHNjLmhhc05leHRJbnQoKSkgewoJICAgICAgICAgICAgCgkgICAgICAgIGludCBpID0gc2MubmV4dEludCgpOwoJICAgICAgICAKCSAgICAgICAgaWYgKGkgIT0gb2xkTnVtIHx8IGZpcnN0KSB7CgkgICAgICAgICAgICBpZiAoZmlyc3QpCgkgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKCSAgICAgICAgICAgIGVsc2UgLy8gaW50ZWdlciB2YWx1ZSBjaGFuZ2VkCgkgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIiVkeCVkLiIsIGZyZXEsIG9sZE51bSk7CgkgICAgICAgICAgICBvbGROdW0gPSBpOwoJICAgICAgICAgICAgZnJlcSA9IDE7CgkgICAgICAgIH0gZWxzZSB7CgkgICAgICAgICAgICBmcmVxKys7CgkgICAgICAgIH0KCSAgICB9CgkgICAgaWYgKCFmaXJzdCkgICAgCgkgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCIlZHglZC4lbiIsIGZyZXEsIG9sZE51bSk7CgkgICAgZWxzZSAKCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJObyBpbnRlZ2VyIGZvdW5kIik7CgkgICAgc2MuY2xvc2UoKTsgICAgCgl9CgoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTdHJpbmdbXSB0ZXN0cyA9IHsKCQkgICAgIiIsCgkJImFiYy4iLAoJCSAgICAiMTEgMTEgMTEiLAoJCSAgICAiMTEyIDIyMyIsCgkJICAgICIxIDEgMVxuNyA3IDIgMiAxIiwKCQkgICAgIjEgMSAxXG43IDcgMiAyIDAgIiwKCQkgICAgIjAgMCAwIiwKCQl9OwoJCQoJCWZvciAoU3RyaW5nIHRlc3Q6IHRlc3RzKSB7CgkJICAgIFN5c3RlbS5vdXQucHJpbnRsbigidGVzdD1bIiArIHRlc3QgKyAiXSIpOwoJCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk51bWJlcnM6ICIpOwoJCSAgICBwcmludFJMRSh0ZXN0KTsKCQkgICAgU3lzdGVtLm91dC5wcmludGxuKCJEaWdpdHM6ICIpOwoJCSAgICBwcmludFJMRURpZ2l0cyh0ZXN0KTsKCQkgICAgCgkJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLS0tLS0tLS0iKTsKCQl9Cgl9Cn0=