Task: | Pizzeriat |
Sender: | FSMnArmosta |
Submission time: | 2018-01-14 21:28:02 +0200 |
Language: | C++ |
Status: | READY |
Result: | 43 |
group | verdict | score |
---|---|---|
#1 | WRONG ANSWER | 0 |
#2 | ACCEPTED | 43 |
#3 | WRONG ANSWER | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | WRONG ANSWER | 0.05 s | 1 | details |
#2 | WRONG ANSWER | 0.04 s | 1 | details |
#3 | WRONG ANSWER | 0.06 s | 1 | details |
#4 | ACCEPTED | 0.27 s | 2 | details |
#5 | ACCEPTED | 0.26 s | 2 | details |
#6 | ACCEPTED | 0.24 s | 2 | details |
#7 | WRONG ANSWER | 0.27 s | 3 | details |
#8 | WRONG ANSWER | 0.24 s | 3 | details |
#9 | WRONG ANSWER | 0.24 s | 3 | details |
Compiler report
input/code.cpp: In function 'void buildTrees(int)': input/code.cpp:14:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i = 0; i < treeAsc[layer-1].size(); i++){ ^ input/code.cpp:18:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(i == treeAsc[layer-1].size()) ^
Code
#include <iostream> #include <vector> using namespace std; int n, q; vector <int> treeAsc[100]; vector <int> treeDesc[100]; bool isRight(int x) { return x % 2; } void buildTrees(int layer){ for(int i = 0; i < treeAsc[layer-1].size(); i++){ treeAsc[layer].push_back(treeAsc[layer-1][i]); treeDesc[layer].push_back(treeDesc[layer-1][i]); i++; if(i == treeAsc[layer-1].size()) break; treeAsc[layer][i/2] = min(treeAsc[layer][i/2], treeAsc[layer-1][i]); treeDesc[layer][i/2] = min(treeDesc[layer][i/2], treeDesc[layer-1][i]); } if(treeAsc[layer].size() > 1) buildTrees(layer+1); } pair <int, int> childrenOf(int layer, int node){ return {(1 << layer)*node, (1 << layer)*(node+1)}; } int queryAsc(int b, int layer, int node, bool up){ pair<int, int> c = childrenOf(layer, node); if(layer == -1) return 0; if(c.second == b) return treeAsc[layer][node]; if(up){ if(c.second > b){ return queryAsc(b, layer, node, false); }else{ if(isRight(node)) return min(treeAsc[layer][node], queryAsc(b, layer+1, (node/2)+1, true)); else return queryAsc(b, layer+1, (node/2), true); } }else{ if(c.second > b){ return queryAsc(b, layer-1, node*2, false); }else{ return min(treeAsc[layer][node], queryAsc(b, layer-1, (node+1)*2, false)); } } } int queryDesc(int b, int layer, int node, bool up){ pair<int, int> c = childrenOf(layer, node); if(layer == -1) return 0; if(c.second == b) return treeDesc[layer][node]; if(up){ if(c.second > b){ return queryDesc(b, layer, node, false); }else{ if(isRight(node)) return min(treeDesc[layer][node], queryDesc(b, layer+1, (node/2)+1, true)); else return queryDesc(b, layer+1, (node/2), true); } }else{ if(c.second > b){ return queryDesc(b, layer-1, node*2, false); }else{ return min(treeDesc[layer][node], queryDesc(b, layer-1, (node+1)*2, false)); } } } int main(){ cin >> n >> q; for(int i = 0; i < n; i++){ int t; cin >> t; treeAsc[0].push_back(t+i); treeDesc[0].push_back(t+(n-i)-1); } buildTrees(1); /* for(int i = 0; i < 17; i++){ for(int k : treeAsc[i]) cout << k << " "; cout << endl; } for(int i = 0; i < 17; i++){ for(int k : treeDesc[i]) cout << k << " "; cout << endl; }*/ for(int w = 0; w < q; w++){ char c; cin >> c; int k; cin >> k; k--; cout << min(queryAsc(n, 0, k, true)-k, queryDesc(k+1, 0, 0, true) - (n-k-1)) << endl; } }
Test details
Test 1
Group: 1
Verdict: WRONG ANSWER
input |
---|
1000 1000 720 271 760 576 363 23 368 995... |
correct output |
---|
43 12 40 22 18 ... |
user output |
---|
7 33 14 33 12 ... |
Test 2
Group: 1
Verdict: WRONG ANSWER
input |
---|
1000 1000 720 18 984 261 344 257 686 441... |
correct output |
---|
10 20 27 37 73 ... |
user output |
---|
10 20 27 37 73 ... |
Test 3
Group: 1
Verdict: WRONG ANSWER
input |
---|
1000 1000 120 764 890 848 949 59 894 916... |
correct output |
---|
24 25 13 16 19 ... |
user output |
---|
24 43 22 25 13 ... |
Test 4
Group: 2
Verdict: ACCEPTED
input |
---|
100000 100000 11763 43585 3126 3787 79765 64... |
correct output |
---|
284 143 346 203 157 ... |
user output |
---|
284 143 346 203 157 ... |
Test 5
Group: 2
Verdict: ACCEPTED
input |
---|
100000 100000 76947 78386 71190 65478 90345 ... |
correct output |
---|
459 297 128 234 204 ... |
user output |
---|
459 297 128 234 204 ... |
Test 6
Group: 2
Verdict: ACCEPTED
input |
---|
100000 100000 39277 33504 98385 58115 28655 ... |
correct output |
---|
234 221 156 455 78 ... |
user output |
---|
234 221 156 455 78 ... |
Test 7
Group: 3
Verdict: WRONG ANSWER
input |
---|
100000 100000 46508 6952 22836 54480 91235 2... |
correct output |
---|
427 409 352 39 388 ... |
user output |
---|
335 425 427 409 294 ... |
Test 8
Group: 3
Verdict: WRONG ANSWER
input |
---|
100000 100000 15918 8771 36223 76330 39229 7... |
correct output |
---|
316 387 435 330 446 ... |
user output |
---|
316 133 206 127 189 ... |
Test 9
Group: 3
Verdict: WRONG ANSWER
input |
---|
100000 100000 87734 39225 78667 43704 17207 ... |
correct output |
---|
228 83 176 428 273 ... |
user output |
---|
149 540 228 272 275 ... |