| Task: | Forth |
| Sender: | sharph2 |
| Submission time: | 2025-10-18 09:31:52 +0300 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 100 |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | details |
| #2 | ACCEPTED | 0.00 s | details |
| #3 | ACCEPTED | 0.01 s | details |
| #4 | ACCEPTED | 0.00 s | details |
| #5 | ACCEPTED | 0.00 s | details |
| #6 | ACCEPTED | 0.00 s | details |
| #7 | ACCEPTED | 0.00 s | details |
| #8 | ACCEPTED | 0.00 s | details |
| #9 | ACCEPTED | 0.00 s | details |
| #10 | ACCEPTED | 0.00 s | details |
| #11 | ACCEPTED | 0.00 s | details |
| #12 | ACCEPTED | 0.00 s | details |
| #13 | ACCEPTED | 0.00 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:27:10: warning: variable 'prod' set but not used [-Wunused-but-set-variable]
27 | auto prod = [&]() {
| ^~~~
input/code.cpp:33:10: warning: variable 'swapp' set but not used [-Wunused-but-set-variable]
33 | auto swapp = [&]() {
| ^~~~~
input/code.cpp:43:10: warning: variable 'over' set but not used [-Wunused-but-set-variable]
43 | auto over = [&]() {
| ^~~~
input/code.cpp:48:10: warning: variable 'rot' set but not used [-Wunused-but-set-variable]
48 | auto rot = [&]() {
| ^~~Code
#include <iostream>
#include <tuple>
#include <vector>
using namespace std;
using Z = long long int;
int main() {
cin.sync_with_stdio(false);
cin.tie(nullptr);
Z x;
cin >> x;
vector<const char*> prog;
vector<Z> sim;
sim.push_back(1);
auto plus = [&]() {
prog.push_back("+");
if(sim.size() < 2) throw 5;
sim[sim.size() - 2] += sim.back();
sim.pop_back();
};
auto prod = [&]() {
prog.push_back("*");
if(sim.size() < 2) throw 5;
sim[sim.size() - 2] *= sim.back();
sim.pop_back();
};
auto swapp = [&]() {
prog.push_back("SWAP");
if(sim.size() < 2) throw 5;
swap(sim[sim.size() - 2], sim.back());
};
auto dup = [&]() {
prog.push_back("DUP");
if(sim.empty()) throw 5;
sim.push_back(sim.back());
};
auto over = [&]() {
prog.push_back("OVER");
if(sim.size() < 2) throw 5;
sim.push_back(sim[sim.size() - 2]);
};
auto rot = [&]() {
prog.push_back("ROT");
if(sim.size() < 3) throw 5;
tie(sim[sim.size() - 3], sim[sim.size() - 2], sim[sim.size() - 1])
= tuple(sim[sim.size() - 2], sim[sim.size() - 1], sim[sim.size() - 3]);
};
auto drop = [&]() {
prog.push_back("DROP");
if(sim.empty()) throw 5;
sim.pop_back();
};
if(x == 1) {
dup();
drop();
} else {
Z p = 1;
while(2 * p <= x) {
if(x & p) {
dup();
}
dup();
plus();
p *= 2;
}
while(sim.size() > 1) {
plus();
}
}
if(sim.empty() || sim.size() != 1 || sim.back() != x) {
cerr << "INCORRECT " << sim.size() << " " << sim.back() << "\n";
throw 5;
}
cout << prog.size() << "\n";
for(const char* step : prog) {
cout << step << " ";
}
cout << "\n";
return 0;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 1 |
| correct output |
|---|
| 2 DUP DROP |
| user output |
|---|
| 2 DUP DROP |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 2 |
| correct output |
|---|
| 2 DUP + |
| user output |
|---|
| 2 DUP + |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 3 |
| correct output |
|---|
| 4 DUP DUP + + |
| user output |
|---|
| 4 DUP DUP + + |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 4 |
| correct output |
|---|
| 6 DUP DUP DUP + ... |
| user output |
|---|
| 4 DUP + DUP + |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 5 |
| correct output |
|---|
| 8 DUP DUP DUP DUP ... |
| user output |
|---|
| 6 DUP DUP + DUP + + |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 10 |
| correct output |
|---|
| 18 DUP DUP DUP DUP ... |
| user output |
|---|
| 8 DUP + DUP DUP + DUP + + |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 42 |
| correct output |
|---|
| 82 DUP DUP DUP DUP ... |
| user output |
|---|
| 14 DUP + DUP DUP + DUP + DUP DUP ... |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 64 |
| correct output |
|---|
| 126 DUP DUP DUP DUP ... |
| user output |
|---|
| 12 DUP + DUP + DUP + DUP + DUP + ... |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 90 |
| correct output |
|---|
| 178 DUP DUP DUP DUP ... |
| user output |
|---|
| 18 DUP + DUP DUP + DUP + DUP DUP ... |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 98 |
| correct output |
|---|
| 194 DUP DUP DUP DUP ... |
| user output |
|---|
| 16 DUP + DUP DUP + DUP + DUP + DU... |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 99 |
| correct output |
|---|
| 196 DUP DUP DUP DUP ... |
| user output |
|---|
| 18 DUP DUP + DUP DUP + DUP + DUP ... |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 100 |
| correct output |
|---|
| 198 DUP DUP DUP DUP ... |
| user output |
|---|
| 16 DUP + DUP + DUP DUP + DUP + DU... |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 95 |
| correct output |
|---|
| 188 DUP DUP DUP DUP ... |
| user output |
|---|
| 22 DUP DUP + DUP DUP + DUP DUP + ... |
