Submission #1175467

#TimeUsernameProblemLanguageResultExecution timeMemory
1175467ortsacBroken Device (JOI17_broken_device)C++20
0 / 100
22 ms1604 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; #define int long long #define fr first #define se second void Anna(int32_t n, int x, int32_t k, int32_t p[]) { vector<pair<int, int>> pares = {{131, 107}, {97, 9}, {55, 147}, {84, 134}, {57, 80}, {142, 116}, {4, 125}, {24, 72}, {6, 117}, {14, 70}, {104, 15}, {47, 102}, {31, 133}, {54, 145}, {106, 129}, {146, 132}, {140, 93}, {7, 1}, {52, 78}, {35, 18}, {40, 22}, {61, 73}, {94, 69}, {118, 56}, {41, 137}, {38, 121}, {46, 100}, {105, 92}, {123, 120}, {128, 135}, {66, 108}, {64, 62}, {17, 10}, {144, 39}, {67, 76}, {114, 86}, {0, 81}, {89, 2}, {115, 90}, {83, 44}, {23, 138}, {37, 139}, {96, 126}, {28, 13}, {48, 33}, {45, 112}, {99, 50}, {149, 51}, {29, 91}, {60, 63}, {143, 101}, {43, 124}, {49, 122}, {8, 127}, {74, 75}, {79, 71}, {111, 25}, {20, 3}, {148, 141}, {11, 42}, {136, 65}, {77, 30}, {98, 110}, {130, 26}, {119, 53}, {5, 88}, {109, 68}, {21, 59}, {27, 19}, {87, 12}, {16, 36}, {113, 103}, {58, 34}, {95, 85}, {82, 32}}; vector<int> ans(150); vector<int> broken(150); for (int i = 0; i < k; i++) broken[p[i]] = 1; vector<int> pow3(38); pow3[0] = 1; for (int i = 1; i < 38; i++) pow3[i] = (3 * pow3[i - 1]); int curr = 0; vector<int> touched(150); for (int i = 37; i >= 0; i--) { while (broken[pares[curr].first] || broken[pares[curr].second]) curr++; //cout << curr << "\n"; int qtd = 1; while (x >= pow3[i]) { qtd++; x -= pow3[i]; } ////cout << qtd - 1 << "\n"; int b0 = (qtd % 2); qtd /= 2; int b1 = (qtd % 2); ans[pares[curr].first] = b0; ans[pares[curr].second] = b1; touched[pares[curr].first] = 1; touched[pares[curr].second] = 1; //cout << pares[curr].first << " " << pares[curr].second << "\n"; if (touched[38]) { //cout << "OIIII\n"; } curr++; } for (int i = 0; i < 75; i++) { auto u = pares[i]; //cout << i << " " << touched[u.fr] << " " << touched[u.se] << "\n"; } //cout << "done\n"; for (int i = 0; i < 150; i++) { Set(i, ans[i]); } }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; #define int long long #define fr first #define se second int Bruno(int32_t n, int32_t a[] ) { vector<pair<int, int>> pares = {{131, 107}, {97, 9}, {55, 147}, {84, 134}, {57, 80}, {142, 116}, {4, 125}, {24, 72}, {6, 117}, {14, 70}, {104, 15}, {47, 102}, {31, 133}, {54, 145}, {106, 129}, {146, 132}, {140, 93}, {7, 1}, {52, 78}, {35, 18}, {40, 22}, {61, 73}, {94, 69}, {118, 56}, {41, 137}, {38, 121}, {46, 100}, {105, 92}, {123, 120}, {128, 135}, {66, 108}, {64, 62}, {17, 10}, {144, 39}, {67, 76}, {114, 86}, {0, 81}, {89, 2}, {115, 90}, {83, 44}, {23, 138}, {37, 139}, {96, 126}, {28, 13}, {48, 33}, {45, 112}, {99, 50}, {149, 51}, {29, 91}, {60, 63}, {143, 101}, {43, 124}, {49, 122}, {8, 127}, {74, 75}, {79, 71}, {111, 25}, {20, 3}, {148, 141}, {11, 42}, {136, 65}, {77, 30}, {98, 110}, {130, 26}, {119, 53}, {5, 88}, {109, 68}, {21, 59}, {27, 19}, {87, 12}, {16, 36}, {113, 103}, {58, 34}, {95, 85}, {82, 32}}; int curr = 37; vector<int> pow3(38); pow3[0] = 1; int ans = 0; for (auto u : pares) { //cout << a[u.fr] << " " << a[u.se] << "\n"; } for (int i = 1; i < 38; i++) pow3[i] = (3 * pow3[i - 1]); for (int i = 0; i < (n/2); i++) { if (a[pares[i].fr] | a[pares[i].se]) { int qtd = -1; qtd += (a[pares[i].fr]); qtd += (2*a[pares[i].se]); ans += (qtd * pow3[curr]); //cout << qtd << "\n"; curr--; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...