# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1175541 | ortsac | Broken Device (JOI17_broken_device) | C++20 | 20 ms | 1604 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 = {{35, 26}, {91, 115}, {30, 59}, {89, 135}, {103, 146}, {118, 73}, {17, 45}, {99, 72}, {13, 2}, {137, 42}, {105, 116}, {67, 8}, {55, 11}, {85, 142}, {44, 80}, {148, 65}, {100, 18}, {88, 123}, {98, 96}, {93, 130}, {147, 0}, {144, 57}, {131, 15}, {109, 49}, {5, 22}, {108, 48}, {75, 129}, {110, 28}, {92, 94}, {81, 7}, {63, 31}, {53, 128}, {43, 6}, {117, 54}, {127, 24}, {69, 133}, {107, 120}, {40, 60}, {149, 82}, {136, 68}, {4, 126}, {12, 119}, {141, 21}, {64, 106}, {87, 20}, {102, 77}, {1, 113}, {143, 33}, {56, 62}, {38, 41}, {36, 16}, {104, 139}, {71, 34}, {19, 140}, {90, 9}, {97, 86}, {145, 125}, {39, 121}, {14, 23}, {83, 112}, {61, 114}, {70, 32}, {10, 51}, {132, 52}, {111, 74}, {101, 84}, {58, 95}, {66, 46}, {25, 134}, {76, 78}, {122, 124}, {47, 37}, {3, 29}, {79, 50}, {138, 27}};
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);
//cout << "oi\n";
for (int i = 37; i >= 0; i--) {
while ((curr < 75) && (broken[pares[curr].first] || broken[pares[curr].second])) {
curr++;
}
if (curr >= 75) break;
//cout << i << "\n";
int qtd = 1;
while (x >= pow3[i]) {
qtd++;
x -= pow3[i];
}
int b0 = (qtd % 2);
qtd /= 2;
int b1 = (qtd % 2);
ans[pares[curr].first] = b0;
ans[pares[curr].second] = b1;
curr++;
}
//cout << "ok\n";
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 = {{35, 26}, {91, 115}, {30, 59}, {89, 135}, {103, 146}, {118, 73}, {17, 45}, {99, 72}, {13, 2}, {137, 42}, {105, 116}, {67, 8}, {55, 11}, {85, 142}, {44, 80}, {148, 65}, {100, 18}, {88, 123}, {98, 96}, {93, 130}, {147, 0}, {144, 57}, {131, 15}, {109, 49}, {5, 22}, {108, 48}, {75, 129}, {110, 28}, {92, 94}, {81, 7}, {63, 31}, {53, 128}, {43, 6}, {117, 54}, {127, 24}, {69, 133}, {107, 120}, {40, 60}, {149, 82}, {136, 68}, {4, 126}, {12, 119}, {141, 21}, {64, 106}, {87, 20}, {102, 77}, {1, 113}, {143, 33}, {56, 62}, {38, 41}, {36, 16}, {104, 139}, {71, 34}, {19, 140}, {90, 9}, {97, 86}, {145, 125}, {39, 121}, {14, 23}, {83, 112}, {61, 114}, {70, 32}, {10, 51}, {132, 52}, {111, 74}, {101, 84}, {58, 95}, {66, 46}, {25, 134}, {76, 78}, {122, 124}, {47, 37}, {3, 29}, {79, 50}, {138, 27}};
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 time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |