| Task: | Tulkki |
| Sender: | alli |
| Submission time: | 2025-10-27 21:05:52 +0200 |
| Language: | C++ (C++20) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 12 |
| #2 | ACCEPTED | 32 |
| #3 | ACCEPTED | 56 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #2 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #3 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #4 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #5 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #6 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #7 | ACCEPTED | 0.00 s | 2, 3 | details |
| #8 | ACCEPTED | 0.00 s | 2, 3 | details |
| #9 | ACCEPTED | 0.00 s | 2, 3 | details |
| #10 | ACCEPTED | 0.01 s | 2, 3 | details |
| #11 | ACCEPTED | 0.00 s | 2, 3 | details |
| #12 | ACCEPTED | 0.00 s | 2, 3 | details |
| #13 | ACCEPTED | 0.00 s | 3 | details |
| #14 | ACCEPTED | 0.00 s | 3 | details |
| #15 | ACCEPTED | 0.04 s | 3 | details |
| #16 | ACCEPTED | 0.00 s | 3 | details |
| #17 | ACCEPTED | 0.06 s | 3 | details |
| #18 | ACCEPTED | 0.02 s | 3 | details |
Compiler report
input/code.cpp: In function 'void handle_command()':
input/code.cpp:39:19: warning: array subscript has type 'char' [-Wchar-subscripts]
39 | cout << v[c] << " ";
| ^
input/code.cpp:44:11: warning: array subscript has type 'char' [-Wchar-subscripts]
44 | v[c]++;
| ^
input/code.cpp:47:11: warning: array subscript has type 'char' [-Wchar-subscripts]
47 | v[c] = 0;
| ^
input/code.cpp:50:18: warning: array subscript has type 'char' [-Wchar-subscripts]
50 | ll u = v[c];
| ^
input/code.cpp: In function 'int main()':
input/code.cpp:95:14: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
95 | while (p < keywords.size()) {
| ~~^~~~~~~~~~~~~~~~~Code
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll v[101010];
vector<string> keywords;
ll p = 0;
void find_keywords(const string& s) {
string keyword;
for (const char c : s) {
if (c == '#') break;
if (c != ' ') {
keyword += c;
} else if (!keyword.empty()){
keywords.push_back(keyword);
keyword = "";
}
}
if (!keyword.empty()) keywords.push_back(keyword);
}
void print_near_keywords(int pointer) {
cout << "keywords near pointer: " << pointer << endl;
for (int i = pointer-3; i <= pointer+3; i++) {
cout << keywords[i] << " ";
}
cout << endl;
}
void handle_command() {
//cout << "pointer at: " << p << endl;
const string& command = keywords[p];
//cout << "command: " << command << endl;
const string& arg = keywords[++p];
//cout << "arg: " << arg << endl;
if (command == "PRINT") {
char c = arg.front();
cout << v[c] << " ";
/*cout << " <- from pointer " << p << "\n";
print_near_keywords(p);*/
} else if (command == "INCREASE") {
char c = arg.front();
v[c]++;
} else if (command == "CLEAR") {
char c = arg.front();
v[c] = 0;
} else if (command == "REPEAT") {
char c = arg.front();
ll u = v[c];
p+=3; // skip TIMES ( important to do before checking u == 0
if (u == 0) {
//cout << "NOT REPATING AT ALL!! at pointer " << p << " which is keywords " << keywords[p] << "\n";
ll sum = 1;
while (sum > 0) {
if (keywords[p] == ")") --sum;
else if (keywords[p] == "(") ++sum;
++p;
}
--p; // Decrease pointer to go back to ) at end of repeat
//cout << "not repeating ended at pointer " << p << " which is keyword " << keywords[p] << endl;
}
//if (c == 'A') cout << "repeating A times " << u << "\n";
//cout << "repeating times: " << u << endl;
//cout << "pointer at before starting loop: " << p << " which is keyword " << keywords[p] << endl;
ll start = p;
for (int i = 1; i<=u;i++) {
p = start;
//cout << "starting loop i: " << i << endl;
while (keywords[p] != ")") {
handle_command();
p++;
}
//cout << "loop finished i: " << i << endl;
}
//cout << "complete loop finish, at pointer " << p << " which is keyword " << keywords[p] << endl;
} else if (command == ")") {
//nothing...
}
}
int main() {
//ios_base::sync_with_stdio(false);
//cin.tie(nullptr);
//freopen(R"(C:\Users\Kymppi\Downloads\test_input.txt)", "r", stdin);
string l;
vector<string> lines;
while (getline(cin, l)) {
if (!l.empty()) lines.push_back(l);
}
for (const string& line : lines) {
find_keywords(line);
}
while (p < keywords.size()) {
handle_command();
p++;
}
}Test details
Test 1 (public)
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| PRINT X INCREASE X PRINT X INCREASE X PRINT X ... |
| correct output |
|---|
| 0 1 2 0 |
| user output |
|---|
| 0 1 2 0 |
Test 2 (public)
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE X # aybabtu PRINT X INCREASE # test ... |
| correct output |
|---|
| 1 3 |
| user output |
|---|
| 1 3 |
Test 3 (public)
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| # Create number 3 INCREASE X INCREASE X INCREASE X ... |
| correct output |
|---|
| 3 |
| user output |
|---|
| 3 |
Test 4 (public)
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE A PRINT A INCREASE B PRINT B INCREASE C ... |
| correct output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
Test 5 (public)
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X ... |
| correct output |
|---|
| 999 |
| user output |
|---|
| 999 |
Test 6 (public)
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| PRINT X PRINT X PRINT X PRINT X PRINT X ... |
| correct output |
|---|
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
| user output |
|---|
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
Test 7 (public)
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A ... |
| correct output |
|---|
| 5 5 5 5 5 |
| user output |
|---|
| 5 5 5 5 5 |
Test 8 (public)
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A ... |
| correct output |
|---|
| 0 0 0 0 0 |
| user output |
|---|
| 0 0 0 0 0 |
Test 9 (public)
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A ... |
| correct output |
|---|
| 6 7 8 9 10 |
| user output |
|---|
| 6 7 8 9 10 |
Test 10 (public)
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A ... |
| correct output |
|---|
| 5 5 |
| user output |
|---|
| 5 5 |
Test 11 (public)
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A ... |
| correct output |
|---|
| 20 |
| user output |
|---|
| 20 |
Test 12 (public)
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE A INCREASE A INCREASE B INCREASE B ... |
| correct output |
|---|
| 42 |
| user output |
|---|
| 42 |
Test 13 (public)
Group: 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A ... |
| correct output |
|---|
| 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 |
| user output |
|---|
| 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 |
Test 14 (public)
Group: 3
Verdict: ACCEPTED
| input |
|---|
| # Create number 3 INCREASE A INCREASE A INCREASE... |
| correct output |
|---|
| 12 |
| user output |
|---|
| 12 |
Test 15 (public)
Group: 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X ... |
| correct output |
|---|
| 531441 |
| user output |
|---|
| 531441 |
Test 16 (public)
Group: 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A ... |
| correct output |
|---|
| 1337 |
| user output |
|---|
| 1337 |
Test 17 (public)
Group: 3
Verdict: ACCEPTED
| input |
|---|
| INCREASE A INCREASE A REPEAT A TIMES ( REPEAT A TIMES ( ... |
| correct output |
|---|
| 1 2 1 2 1 1 3 4 3 4 3 4 3 4 3 ... |
| user output |
|---|
| 1 2 1 2 1 1 3 4 3 4 3 4 3 4 3 ... |
Test 18 (public)
Group: 3
Verdict: ACCEPTED
| input |
|---|
| # Efficient algorithm for find... |
| correct output |
|---|
| 2 3 5 7 11 13 17 19 23 29 31 3... |
| user output |
|---|
| 2 3 5 7 11 13 17 19 23 29 31 3... |
