| Task: | Monistus |
| Sender: | qanpi |
| Submission time: | 2023-11-10 22:07:03 +0200 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | 0 |
| group | verdict | score |
|---|---|---|
| #1 | WRONG ANSWER | 0 |
| #2 | WRONG ANSWER | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | WRONG ANSWER | 0.01 s | 1, 2 | details |
| #2 | WRONG ANSWER | 0.00 s | 1, 2 | details |
| #3 | WRONG ANSWER | 0.00 s | 1, 2 | details |
| #4 | WRONG ANSWER | 0.00 s | 1, 2 | details |
| #5 | WRONG ANSWER | 0.00 s | 1, 2 | details |
| #6 | WRONG ANSWER | 0.00 s | 1, 2 | details |
| #7 | WRONG ANSWER | 0.00 s | 1, 2 | details |
| #8 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #9 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #10 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #11 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #12 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #13 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #14 | TIME LIMIT EXCEEDED | -- | 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 maxSize;
unordered_map<string, vector<char>> m;
vector<char> input;
void solve(int start, int end) {
maxSize = max((int)input.size(), maxSize);
//cout << maxSize << endl;
// string hash = "";
//
//for (int i=start; i<n; i++) {
// seenCount++;
// hash += input[i];
//}
//if (m.count(hash)) { //size limit?
//}
//cout << "hasb: " << hash << endl;
int n = end;
for (int i=start; i<n; i++) {
if (i >= (int)input.size()) break;
char ch = input[i];
int digit = ch - '0';
if (digit > 0 && digit <= 9) {
//before.insert(before.end(), input.begin(), input.begin()+i);
vector<char> expanded(input.begin()+i+1, input.begin()+i+1+digit);
input.erase(input.begin()+i);
//cout << "input: ";
//for (auto x : input) cout << x;
//cout << endl;
//cout << "expanded: ";
//for (auto x : expanded) cout << x;
//cout << endl;
bool overlaps = false;
int s = (int) expanded.size();
string hash;
int length = s + digit;
hash += ch;
for (int j=0; j<s; j++) {
char ch2 = expanded[j];
hash += ch2;
int d = ch2 - '0';
if (d > 0 && d <= 9) {
length += d-1;
if (j + d >= s) {
overlaps = true;
break;
}
}
}
//cout << hash << ": " << length << endl;
if (overlaps) {
input.insert(input.begin()+i, expanded.begin(), expanded.end());
//cout << "solving overlap for " << hash << " from " << i << " to " << input.size() << ": " <<endl;
n = input.size();
//solve(i, input.size());
} else {
if (m.count(hash)) {
seenCount++;
vector<char> hashed = m[hash];
input.insert(input.begin()+i, hashed.begin(), hashed.end());
//cout << "seen: " << hash << endl;
//cout << "seen for hash " << hash << " from " << i+length << " to " << input.size() << ": " << endl;
//i+=length;
n = input.size();
//solve(i+length, input.size());
} else {
//cout << hash << endl;
input.insert(input.begin()+i, expanded.begin(), expanded.end());
solve(i, i+s);
//cout << hash << " " << length << " " << overlaps << endl;
vector<char> solved(input.begin()+i, input.begin()+i+length);
//cout << "solved for hash " << hash << " from " << i << " to " << i+s << ": ";
//for (auto x : solved) cout << x;
//cout << endl;
m[hash] = solved;
//i += length - 1;
//n+=length;
//n = input.size();
//solve(i+length, input.size());
}
}
//if (overlaps) {
// expanded.insert(expanded.end(), after.begin(), after.end());
// ans = solve(expanded);
//} else {
// ans = solve(expanded);
// vector<char> s2 = solve(after);
// ans.insert(ans.end(), s2.begin(), s2.end());
//}
//before.insert(before.end(), ans.begin(), ans.end());
//if (hash != "") {
// m[hash] = before;
//}
//return before;
//
}
}
}
int main() {
string prompt;
cin >> prompt;
input.insert(input.end(), prompt.begin(), prompt.end());
solve(0, 501010);
//solve(0, input.size());
//cout << "-==================|" <<endl;
//for (auto x : m) {
// cout << x.first << ": " << endl;
// for (auto y : x.second) {
// cout << y;
// }
// cout << endl;
//}
//cout << seenCount << endl;
for (auto x : input) {
cout << x;
}
cout << endl;
//cout << maxSize << endl;
//cout << ans.size() << endl;
}
Test details
Test 1
Group: 1, 2
Verdict: WRONG ANSWER
| input |
|---|
| 987654321o987654321p |
| correct output |
|---|
| oooooooooooooooooooooooooooooo... |
| user output |
|---|
| oooooooooooooooooooooooooooooo... Truncated |
Test 2
Group: 1, 2
Verdict: WRONG ANSWER
| input |
|---|
| 1e1o1zo1r1h1y1m1b1mn |
| correct output |
|---|
| eeoozzorrhhyymmbbmmn |
| user output |
|---|
| eeoozzorrhhyymmbbmmmn |
Test 3
Group: 1, 2
Verdict: WRONG ANSWER
| input |
|---|
| h4y21n7dz6vr1p4go1ec |
| correct output |
|---|
| hynnnnynnnndzvrppdzvrppdzvrppg... |
| user output |
|---|
| hynnnnnynnnnnnnndzvrppdzvrpppd... |
Test 4
Group: 1, 2
Verdict: WRONG ANSWER
| input |
|---|
| bv2olah1h6o4f2mx3z1k |
| correct output |
|---|
| bvololahhhofmxmxfmxmxofmxmxfmx... |
| user output |
|---|
| bvololahhhofmxmxfmxmxmxofmxmxf... |
Test 5
Group: 1, 2
Verdict: WRONG ANSWER
| input |
|---|
| xewpp2f1l6a5jp1v2v1y |
| correct output |
|---|
| xewppfffllajpvvajpvvajpvvjpjpv... |
| user output |
|---|
| xewppfffllajpvvajpvvvajpvvvjpj... |
Test 6
Group: 1, 2
Verdict: WRONG ANSWER
| input |
|---|
| 1v4z1kjm1t6vp5c1m2np |
| correct output |
|---|
| vvzkkjzkkjmttvpcmmvpcmmvpcmmnc... |
| user output |
|---|
| vvzkkjzkkkjmttvpcmmvpcmmmvpcmm... |
Test 7
Group: 1, 2
Verdict: WRONG ANSWER
| input |
|---|
| y2bl9cp21v7kgesxm2uv |
| correct output |
|---|
| yblblcpvvvvkgecpkkkkgecpvvvvkg... |
| user output |
|---|
| yblblcpvvvvvkgecpkkkkkgecpvvvv... |
Test 8
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 987654321b987654321f987654321u... |
| correct output |
|---|
| bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb... |
| user output |
|---|
| (empty) |
Test 9
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| agjv4321w9dskvax5ws21r321l9n7d... |
| correct output |
|---|
| agjvwwwwwwwwwwwwwwwwdskvaxwsds... |
| user output |
|---|
| (empty) |
Test 10
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 4mr1d71k432jt9sddyoy2oq7jvc1bm... |
| correct output |
|---|
| mrddmrddkkjtjtjtjtjtjtjtjtkkjt... |
| user output |
|---|
| (empty) |
Test 11
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1a1l1m1a1t1gc1yv1x1p1w1x1d1d1p... |
| correct output |
|---|
| aallmmaattggcyyvxxppwwxxddddpp... |
| user output |
|---|
| (empty) |
Test 12
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 321e321b321a321r321m321f321s32... |
| correct output |
|---|
| eeeeeeeebbbbbbbbaaaaaaaarrrrrr... |
| user output |
|---|
| (empty) |
Test 13
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 4321e4321l4321t4321w4321g4321c... |
| correct output |
|---|
| eeeeeeeeeeeeeeeellllllllllllll... |
| user output |
|---|
| (empty) |
Test 14
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 987654321u987654321p987654321g... |
| correct output |
|---|
| uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu... |
| user output |
|---|
| (empty) |
