Task: | Merkkijono |
Sender: | inv41idu53rn4m3 |
Submission time: | 2017-10-03 18:19:26 +0300 |
Language: | C++ |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | WRONG ANSWER | 0 |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.06 s | details |
#2 | WRONG ANSWER | 0.04 s | details |
#3 | WRONG ANSWER | 0.06 s | details |
#4 | ACCEPTED | 0.04 s | details |
#5 | WRONG ANSWER | 0.04 s | details |
#6 | ACCEPTED | 0.06 s | details |
#7 | ACCEPTED | 0.04 s | details |
#8 | ACCEPTED | 0.03 s | details |
#9 | ACCEPTED | 0.04 s | details |
#10 | ACCEPTED | 0.04 s | details |
Code
#include <iostream>using namespace std;struct streak_start {char c; // Character the streak consists ofint i; // The start position of the streak};int main() {char input[1000]; // Array for input datastreak_start stack[1000]; // Array for starts of potential streaksint sheight = 0; // Height of the streak "stack"bool streak = false; // Whether a streak is currently activecin >> input; // Read inputstack[sheight] = {input[0], 0}; // Add first char to stackfor (int n = 1; n < 1000; n++) {if (input[n] == 0) { // Stop if null is encountered// Remove the final streak if one was activeif (streak) {for (int m = stack[sheight].i; m < n; m++) {input[m] = 255; // This should never appear in the input}}break;}if (streak) {if (input[n] != stack[sheight].c) { // Streak no longer activesheight--; // Take streak off the stack (because it's over)if (input[n] != stack[sheight].c) { // Check for nested streaks// When set of nested streaks ends, remove entries from listfor (int m = stack[sheight + 1].i; m < n; m++) {input[m] = 255; // This should never appear in the input}streak = false;}}}if (!streak) {if (input[n] != stack[sheight].c) { // If unmatching, start new potential streaksheight++;stack[sheight] = {input[n], n};} else { // If characters match we have a streakstreak = true;}}// This was useful for testing//cout << input[n] << " " << streak << endl;}for (int o = 0; o < 1000; o++) { // Output resultif (input[o] == 0) { // We don't want to keep going after nullbreak;}if (input[o] != (char) 255) { // Skip writing the marker charcout << input[o];}}//cout << endl; // End with a newline// Maybe the newline was wrong?return 0;}
Test details
Test 1
Verdict: ACCEPTED
input |
---|
ABABABABABABABABABABABABABABAB... |
correct output |
---|
ABABABABABABABABABABABABABABAB... |
user output |
---|
ABABABABABABABABABABABABABABAB... |
Test 2
Verdict: WRONG ANSWER
input |
---|
AABBAABBAABBAABBAABBAABBAABBAA... |
correct output |
---|
(empty) |
user output |
---|
BB |
Test 3
Verdict: WRONG ANSWER
input |
---|
ABABABABABABABABABABABABABABAB... |
correct output |
---|
(empty) |
user output |
---|
ABABABABABABABABABABABABABABAB... |
Test 4
Verdict: ACCEPTED
input |
---|
BBABABBBBBAABBBABABABBBBAAABAB... |
correct output |
---|
BAB |
user output |
---|
BAB |
Test 5
Verdict: WRONG ANSWER
input |
---|
ACDCBBACDBBBACAACBBDBADBAABABA... |
correct output |
---|
ACDCACDADBADABACACDCADADABABCA... |
user output |
---|
ACDCACDADBADABACACDCADADABABCA... |
Test 6
Verdict: ACCEPTED
input |
---|
EETFHIJOGACDHMGVFJCMETMZDEITTR... |
correct output |
---|
TFHIJOGACDHMGVFJCMETMZDEIROTET... |
user output |
---|
TFHIJOGACDHMGVFJCMETMZDEIROTET... |
Test 7
Verdict: ACCEPTED
input |
---|
GOONLAHLYPRFCZKIKSJWAWWYJJPCDB... |
correct output |
---|
GNLAHLYPRFCZKIKSJWAYPCDNWYMRCE... |
user output |
---|
GNLAHLYPRFCZKIKSJWAYPCDNWYMRCE... |
Test 8
Verdict: ACCEPTED
input |
---|
PISHWMOTCDDZFRMYMOMYDYYGJZIQHS... |
correct output |
---|
PISHWMOTCZFRMYMOMYDGJZIQHSVAOK... |
user output |
---|
PISHWMOTCZFRMYMOMYDGJZIQHSVAOK... |
Test 9
Verdict: ACCEPTED
input |
---|
QUVVTPXAMWWODFXRONJODPGBTCISGM... |
correct output |
---|
QUTPXAMODFXRONJODPGBTCISGMVRBW... |
user output |
---|
QUTPXAMODFXRONJODPGBTCISGMVRBW... |
Test 10
Verdict: ACCEPTED
input |
---|
POXHAHYEZTLYNFSLABODMRNKDSKROZ... |
correct output |
---|
POXHAHYEZTLYNFSLABODMRNKDSKROZ... |
user output |
---|
POXHAHYEZTLYNFSLABODMRNKDSKROZ... |