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