Task: | Ohjelma |
Sender: | FSMnArmosta |
Submission time: | 2017-01-19 15:16:05 +0200 |
Language: | C++ |
Status: | READY |
Result: | 21 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 21 |
#2 | TIME LIMIT EXCEEDED | 0 |
#3 | TIME LIMIT EXCEEDED | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.04 s | 1 | details |
#2 | ACCEPTED | 0.04 s | 1 | details |
#3 | ACCEPTED | 0.05 s | 1 | details |
#4 | ACCEPTED | 0.03 s | 1 | details |
#5 | ACCEPTED | 0.04 s | 1 | details |
#6 | ACCEPTED | 0.04 s | 1 | details |
#7 | ACCEPTED | 0.04 s | 1 | details |
#8 | ACCEPTED | 0.04 s | 1 | details |
#9 | ACCEPTED | 0.04 s | 1 | details |
#10 | ACCEPTED | 0.04 s | 1 | details |
#11 | ACCEPTED | 0.44 s | 2 | details |
#12 | TIME LIMIT EXCEEDED | -- | 2 | details |
#13 | ACCEPTED | 0.47 s | 2 | details |
#14 | ACCEPTED | 0.46 s | 2 | details |
#15 | ACCEPTED | 0.43 s | 2 | details |
#16 | ACCEPTED | 0.50 s | 2 | details |
#17 | ACCEPTED | 0.38 s | 2 | details |
#18 | ACCEPTED | 0.50 s | 2 | details |
#19 | ACCEPTED | 0.47 s | 2 | details |
#20 | ACCEPTED | 0.37 s | 2 | details |
#21 | TIME LIMIT EXCEEDED | -- | 3 | details |
#22 | TIME LIMIT EXCEEDED | -- | 3 | details |
#23 | TIME LIMIT EXCEEDED | -- | 3 | details |
#24 | TIME LIMIT EXCEEDED | -- | 3 | details |
#25 | TIME LIMIT EXCEEDED | -- | 3 | details |
#26 | TIME LIMIT EXCEEDED | -- | 3 | details |
#27 | TIME LIMIT EXCEEDED | -- | 3 | details |
#28 | TIME LIMIT EXCEEDED | -- | 3 | details |
#29 | TIME LIMIT EXCEEDED | -- | 3 | details |
#30 | TIME LIMIT EXCEEDED | -- | 3 | details |
Compiler report
input/code.cpp: In function 'int main()': input/code.cpp:137:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i = 0; i < p.size(); i++){ ^
Code
#include <iostream> #include <vector> #include <queue> #include <map> /* Siihen en alennu, että ilman Pythonin foria koodaisin [:-1] */ #define MP std::make_pair #define for_x_in_range for(int x = 0; x < #define iteratex ;x++) #define for_y_in_range for(int y = 0; y < #define iteratey ;y++) #define for_z_in_range for(int z = 0; z < #define iteratez ;z++) #define ADD 0 #define MUL 1 /* tgt = int(input()) memory = {} def addTo(base, command): if base == ["END"]: return command + base else: return base[:-1]+command+base[-1:] def programsFor(num): if not num in memory.keys(): if num == 1: return ["END"] else: pf2 = [] pf3 = [] if num % 2 == 0: pf2 = programsFor(num // 2) if num - 3 > 0: pf3 = programsFor(num - 3) if pf2 == [] and pf3 == []: memory[num] = [] elif pf2 != [] and pf3 == []: memory[num] = addTo(pf2, ["MUL"]) elif pf2 == [] and pf3 != []: memory[num] = addTo(pf3, ["ADD"]) else: if len(pf2) > len(pf3): memory[num] = addTo(pf3, ["ADD"]) else: memory[num] = addTo(pf2, ["MUL"]) return memory[num] program = programsFor(tgt) if program == []: print(0) else: print(len(program)) print("\n".join(program)) */ std::map<int, std::vector<int> > memory; std::vector<int> nope; std::vector<int> programsFor(int num){ if(memory.find(num) == memory.end()){ if(num == 1){ std::vector<int> v; return v; }else{ std::vector<int> pf2; std::vector<int> pf3; bool pf2_possible = false; bool pf3_possible = false; if(num % 2 == 0){ pf2 = programsFor(num / 2); if(pf2.size() == 0 or pf2.front() != -1){ pf2_possible = true; pf2.push_back(MUL); } }if(num - 3 > 0){ pf3 = programsFor(num - 3); if(pf3.size() == 0 or pf3.front() != -1){ pf3_possible = true; pf3.push_back(ADD); } } if(pf2_possible == false and pf3_possible == false){ memory[num] = nope; }else if(pf2_possible == true and pf3_possible == false){ memory[num] = pf2; }else if(pf2_possible == false and pf3_possible == true){ memory[num] = pf3; }else{ if(pf2.size() > pf3.size()){ memory[num] = pf3; }else{ memory[num] = pf2; } } } } return memory[num]; } int main(){ nope.push_back(-1); int tgt; std::cin >> tgt; std::vector<int> p = programsFor(tgt); if(p.size() == 0 or (p.size() > 0 and p.front() != -1)){ std::cout << p.size()+1 << std::endl; for(int i = 0; i < p.size(); i++){ if(p[i] == ADD){ std::cout << "ADD" << std::endl; }else{ std::cout << "MUL" << std::endl; } } std::cout << "END" << std::endl; }else{ std::cout << 0 << std::endl; } }
Test details
Test 1
Group: 1
Verdict: ACCEPTED
input |
---|
58 |
correct output |
---|
8 MUL ADD MUL ADD ... |
user output |
---|
8 MUL ADD MUL ADD ... |
Test 2
Group: 1
Verdict: ACCEPTED
input |
---|
72 |
correct output |
---|
0 |
user output |
---|
0 |
Test 3
Group: 1
Verdict: ACCEPTED
input |
---|
83 |
correct output |
---|
8 MUL ADD MUL MUL ... |
user output |
---|
8 MUL ADD MUL MUL ... |
Test 4
Group: 1
Verdict: ACCEPTED
input |
---|
53 |
correct output |
---|
8 ADD MUL ADD MUL ... |
user output |
---|
8 ADD MUL ADD MUL ... |
Test 5
Group: 1
Verdict: ACCEPTED
input |
---|
100 |
correct output |
---|
8 ADD MUL ADD MUL ... |
user output |
---|
8 ADD MUL ADD MUL ... |
Test 6
Group: 1
Verdict: ACCEPTED
input |
---|
64 |
correct output |
---|
6 ADD MUL MUL MUL ... |
user output |
---|
6 ADD MUL MUL MUL ... |
Test 7
Group: 1
Verdict: ACCEPTED
input |
---|
84 |
correct output |
---|
0 |
user output |
---|
0 |
Test 8
Group: 1
Verdict: ACCEPTED
input |
---|
60 |
correct output |
---|
0 |
user output |
---|
0 |
Test 9
Group: 1
Verdict: ACCEPTED
input |
---|
51 |
correct output |
---|
0 |
user output |
---|
0 |
Test 10
Group: 1
Verdict: ACCEPTED
input |
---|
77 |
correct output |
---|
9 ADD ADD MUL ADD ... |
user output |
---|
9 ADD ADD MUL ADD ... |
Test 11
Group: 2
Verdict: ACCEPTED
input |
---|
941694 |
correct output |
---|
0 |
user output |
---|
0 |
Test 12
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
905674 |
correct output |
---|
30 MUL ADD MUL ADD ... |
user output |
---|
(empty) |
Test 13
Group: 2
Verdict: ACCEPTED
input |
---|
908426 |
correct output |
---|
29 ADD MUL ADD MUL ... |
user output |
---|
29 ADD MUL ADD MUL ... |
Test 14
Group: 2
Verdict: ACCEPTED
input |
---|
960500 |
correct output |
---|
31 ADD ADD MUL MUL ... |
user output |
---|
31 ADD ADD MUL MUL ... |
Test 15
Group: 2
Verdict: ACCEPTED
input |
---|
902101 |
correct output |
---|
27 MUL ADD MUL ADD ... |
user output |
---|
27 MUL ADD MUL ADD ... |
Test 16
Group: 2
Verdict: ACCEPTED
input |
---|
994208 |
correct output |
---|
27 ADD ADD MUL MUL ... |
user output |
---|
27 ADD ADD MUL MUL ... |
Test 17
Group: 2
Verdict: ACCEPTED
input |
---|
923538 |
correct output |
---|
0 |
user output |
---|
0 |
Test 18
Group: 2
Verdict: ACCEPTED
input |
---|
950287 |
correct output |
---|
24 MUL ADD MUL ADD ... |
user output |
---|
24 MUL ADD MUL ADD ... |
Test 19
Group: 2
Verdict: ACCEPTED
input |
---|
950516 |
correct output |
---|
29 ADD ADD MUL MUL ... |
user output |
---|
29 ADD ADD MUL MUL ... |
Test 20
Group: 2
Verdict: ACCEPTED
input |
---|
921882 |
correct output |
---|
0 |
user output |
---|
0 |
Test 21
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
933942296856681219 |
correct output |
---|
0 |
user output |
---|
(empty) |
Test 22
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
955775764385016720 |
correct output |
---|
0 |
user output |
---|
(empty) |
Test 23
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
981578916796073406 |
correct output |
---|
0 |
user output |
---|
(empty) |
Test 24
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
927875200723222396 |
correct output |
---|
94 MUL ADD MUL MUL ... |
user output |
---|
(empty) |
Test 25
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
990125206148420558 |
correct output |
---|
84 ADD MUL ADD MUL ... |
user output |
---|
(empty) |
Test 26
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
964804802247123102 |
correct output |
---|
0 |
user output |
---|
(empty) |
Test 27
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
996610423667404231 |
correct output |
---|
96 MUL ADD MUL ADD ... |
user output |
---|
(empty) |
Test 28
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
948665008088793691 |
correct output |
---|
86 MUL ADD MUL ADD ... |
user output |
---|
(empty) |
Test 29
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
969397787818953279 |
correct output |
---|
0 |
user output |
---|
(empty) |
Test 30
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
918471787211371085 |
correct output |
---|
90 ADD MUL ADD MUL ... |
user output |
---|
(empty) |