Submission details
Task:Tulkki
Sender:sandyy
Submission time:2025-10-27 21:22:27 +0200
Language:C++ (C++17)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED12
#2ACCEPTED32
#3ACCEPTED56
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 2, 3details
#2ACCEPTED0.00 s1, 2, 3details
#3ACCEPTED0.00 s1, 2, 3details
#4ACCEPTED0.00 s1, 2, 3details
#5ACCEPTED0.00 s1, 2, 3details
#6ACCEPTED0.00 s1, 2, 3details
#7ACCEPTED0.00 s2, 3details
#8ACCEPTED0.00 s2, 3details
#9ACCEPTED0.00 s2, 3details
#10ACCEPTED0.00 s2, 3details
#11ACCEPTED0.00 s2, 3details
#12ACCEPTED0.00 s2, 3details
#13ACCEPTED0.00 s3details
#14ACCEPTED0.00 s3details
#15ACCEPTED0.03 s3details
#16ACCEPTED0.00 s3details
#17ACCEPTED0.04 s3details
#18ACCEPTED0.01 s3details

Compiler report

input/code.cpp: In function 'std::vector<Node*> parse(std::vector<std::__cxx11::basic_string<char> >&, int&)':
input/code.cpp:18:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |         while(i<program.size()) {
      |               ~^~~~~~~~~~~~~~~
input/code.cpp: In function 'void run(Node*)':
input/code.cpp:44:37: warning: array subscript has type 'char' [-Wchar-subscripts]
   44 |         if(n->func == "CLEAR") c[n->var]=0;
      |                                  ~~~^~~
input/code.cpp:45:50: warning: array subscript has type 'char' [-Wchar-subscripts]
   45 |         else if(n->func == "PRINT") cout << c[n->var] << "\n";
      |                                               ~~~^~~
input/code.cpp:46:45: warning: array subscript has type 'char' [-Wchar-subscripts]
   46 |         else if(n->func == "INCREASE") c[n->var]++;
      |...

Code

#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pb push_back
#define ar array

int c[128];

struct Node {
	string func;
	char var;
	vector<Node*> children;
};

vector<Node*> parse(vector<string>& program, int& i) {
	vector<Node*> block;
	while(i<program.size()) {
		string t = program[i++];
		if(t==")") {
			break;
		}
		if(t=="PRINT" || t=="INCREASE" || t=="CLEAR") {
			char var=program[i++][0];
			Node* n = new Node();
			n->func=t;
			n->var = var;
			block.pb(n);
		}
		else if(t=="REPEAT") {
			char var=program[i++][0];
			Node* rep = new Node();
			i+=2;
			rep->func = t;
			rep->var = var;
			rep->children = parse(program, i);
			block.pb(rep);
		}
	}
	return block;
}

void run(Node* n) {
	if(n->func == "CLEAR") c[n->var]=0;
	else if(n->func == "PRINT") cout << c[n->var] << "\n";
	else if(n->func == "INCREASE") c[n->var]++;
	else if(n->func == "REPEAT") {
		int cnt = c[n->var];
		for(int i=0; i<cnt; i++) {
			for(Node* child:n->children) run(child);
		}
	}
}

void solve() {
	// tokenize
	string s, opcode;
	vector<string> program;
	while(getline(cin, s)) {
		int pos=s.find('#');
		if(pos!=s.size()) {
			s=s.substr(0, pos);
		}
		stringstream ss(s);
		while(ss>>opcode) {
			program.pb(opcode);
		}
	}
	int i=0;
	vector<Node*> AST = parse(program, i);
	for(Node* n:AST) run(n);
}


int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int T=1;
	//cin >> T;
	while(T--) {
		solve();
	}
}

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

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
...

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
...

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
...

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
...

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
...