| Task: | Monistus |
| Sender: | qanpi |
| Submission time: | 2023-11-11 17:09:08 +0200 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 71 |
| #2 | ACCEPTED | 29 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | 1, 2 | details |
| #2 | ACCEPTED | 0.00 s | 1, 2 | details |
| #3 | ACCEPTED | 0.00 s | 1, 2 | details |
| #4 | ACCEPTED | 0.00 s | 1, 2 | details |
| #5 | ACCEPTED | 0.00 s | 1, 2 | details |
| #6 | ACCEPTED | 0.00 s | 1, 2 | details |
| #7 | ACCEPTED | 0.00 s | 1, 2 | details |
| #8 | ACCEPTED | 0.03 s | 2 | details |
| #9 | ACCEPTED | 0.07 s | 2 | details |
| #10 | ACCEPTED | 0.07 s | 2 | details |
| #11 | ACCEPTED | 0.07 s | 2 | details |
| #12 | ACCEPTED | 0.06 s | 2 | details |
| #13 | ACCEPTED | 0.06 s | 2 | details |
| #14 | ACCEPTED | 0.05 s | 2 | details |
Code
#include<iostream>
#include<bits/stdc++.h>
#include<string>
#include<map>
#include <unordered_map>
#include<deque>
using namespace std;
typedef long long ll;
constexpr ll M = 1000000007;
constexpr ll P = (1 << 18);
constexpr int INF = 1e9;
int seenCount;
int depth;
int maxSize;
unordered_map<string, string> m;
string solve(string input, int length) {
string key = to_string(length) + input.substr(0, length);
if (m.count(key)) {
seenCount++;
return m[key];
}
string res = "";
//int n = input.size();
bool memoize = true;
for (int i=0; i<length; i++) {
char ch = input[i];
int digit = ch - '0';
if (digit > 0 && digit <= 9) {
string cutout = input.substr(i+1, digit);
//cout << "cutout: " << cutout << endl;
string expanded = solve(cutout + cutout, digit);
//cout << "exp: " << expanded << endl;
//string normal = solve(input.substr(i+1, digit+digit), digit);
int overlap = (i + digit) - length + 1;
if (overlap > 0) memoize = false;
//while (overlap > 0) {
// memoize = false;
// expanded.pop_back();
// overlap--;
//}
//res += normal;
res += expanded;
//i += digit;
} else {
res += ch;
}
}
//cout << "res for " << input << ": " << res << endl;
if (memoize) m[key] = res;
return res;
}
vector<char> ans;
int main() {
ans.reserve(501010);
string prompt;
cin >> prompt;
//cout << solve(prompt, (int)prompt.size());
for (int i=0; i<(int)prompt.size(); i++) {
char ch = prompt[i];
int digit = ch - '0';
//cout << i << ": " << ch << endl;
if (digit > 0 && digit <= 9) {
string cutout = prompt.substr(i+1, digit);
//cout << "cutout: " << cutout << endl;
string expanded = solve(cutout + cutout, digit);
//cout << "exp: " << expanded << endl;
ans.insert(ans.end(), expanded.begin(), expanded.end());
//string normal = solve(prompt.substr(i+1, digit+digit), digit);
//ans.insert(ans.end(), normal.begin(), normal.end());
//i += digit - 1;
} else {
ans.push_back(ch);
}
}
for (auto ch : ans) cout << ch;
cout << endl;
//cout << "-==================|" <<endl;
//for (auto x : m) {
// cout << x.first << ": " << x.second << endl;
//}
//cout << seenCount << endl;
//cout << maxSize << endl;
//cout << ans.size() << endl;
}
Test details
Test 1
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 987654321o987654321p |
| correct output |
|---|
| oooooooooooooooooooooooooooooo... |
| user output |
|---|
| oooooooooooooooooooooooooooooo... Truncated |
Test 2
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1e1o1zo1r1h1y1m1b1mn |
| correct output |
|---|
| eeoozzorrhhyymmbbmmn |
| user output |
|---|
| eeoozzorrhhyymmbbmmn |
Test 3
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| h4y21n7dz6vr1p4go1ec |
| correct output |
|---|
| hynnnnynnnndzvrppdzvrppdzvrppg... |
| user output |
|---|
| hynnnnynnnndzvrppdzvrppdzvrppg... |
Test 4
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| bv2olah1h6o4f2mx3z1k |
| correct output |
|---|
| bvololahhhofmxmxfmxmxofmxmxfmx... |
| user output |
|---|
| bvololahhhofmxmxfmxmxofmxmxfmx... |
Test 5
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| xewpp2f1l6a5jp1v2v1y |
| correct output |
|---|
| xewppfffllajpvvajpvvajpvvjpjpv... |
| user output |
|---|
| xewppfffllajpvvajpvvajpvvjpjpv... |
Test 6
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 1v4z1kjm1t6vp5c1m2np |
| correct output |
|---|
| vvzkkjzkkjmttvpcmmvpcmmvpcmmnc... |
| user output |
|---|
| vvzkkjzkkjmttvpcmmvpcmmvpcmmnc... |
Test 7
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| y2bl9cp21v7kgesxm2uv |
| correct output |
|---|
| yblblcpvvvvkgecpkkkkgecpvvvvkg... |
| user output |
|---|
| yblblcpvvvvkgecpkkkkgecpvvvvkg... |
Test 8
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 987654321b987654321f987654321u... |
| correct output |
|---|
| bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb... |
| user output |
|---|
| bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb... Truncated |
Test 9
Group: 2
Verdict: ACCEPTED
| input |
|---|
| agjv4321w9dskvax5ws21r321l9n7d... |
| correct output |
|---|
| agjvwwwwwwwwwwwwwwwwdskvaxwsds... |
| user output |
|---|
| agjvwwwwwwwwwwwwwwwwdskvaxwsds... Truncated |
Test 10
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 4mr1d71k432jt9sddyoy2oq7jvc1bm... |
| correct output |
|---|
| mrddmrddkkjtjtjtjtjtjtjtjtkkjt... |
| user output |
|---|
| mrddmrddkkjtjtjtjtjtjtjtjtkkjt... Truncated |
Test 11
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 1a1l1m1a1t1gc1yv1x1p1w1x1d1d1p... |
| correct output |
|---|
| aallmmaattggcyyvxxppwwxxddddpp... |
| user output |
|---|
| aallmmaattggcyyvxxppwwxxddddpp... Truncated |
Test 12
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 321e321b321a321r321m321f321s32... |
| correct output |
|---|
| eeeeeeeebbbbbbbbaaaaaaaarrrrrr... |
| user output |
|---|
| eeeeeeeebbbbbbbbaaaaaaaarrrrrr... Truncated |
Test 13
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 4321e4321l4321t4321w4321g4321c... |
| correct output |
|---|
| eeeeeeeeeeeeeeeellllllllllllll... |
| user output |
|---|
| eeeeeeeeeeeeeeeellllllllllllll... Truncated |
Test 14
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 987654321u987654321p987654321g... |
| correct output |
|---|
| uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu... |
| user output |
|---|
| uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu... Truncated |
