# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1247372 | _asunaa | Broken Device (JOI17_broken_device) | C++20 | 53 ms | 17216 KiB |
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
int a[40];
//void Set (int a, int b){
// cout << b;
//}
void Anna (int N, long long X, int K, int P[]){
long long i, j, l, r, mid, p, q, k, t, n, m, b, c, d, ans, cnt, res, arr[1000005], arr2[1000005];
string s = " ";
while (X > 1){
s.push_back((char)(X % 2 + 48));
X /= 2;
}
s.push_back((char)(X + 48));
d = s.length() - 1;
// cout << s << "\n";
p = 1;
t = 0;
for (i = 1; i <= N; i += 1){
arr[i] = 0;
}
for (i = 0; i < K; i += 1){
arr[P[i]] = 1;
}
for (i = 1; i <= N; i += 3){
res = arr[i] + arr[i + 1] + arr[i + 2];
if (res >= 2 || p > d){
arr2[t] = 0;
arr2[t + 1] = 0;
arr2[t + 2] = 0;
}
else if (res == 1){
if (p == d){
s += "0";
}
if (s[p] == 49){
if (arr[i] == 1){
arr2[t] = 0;
arr2[t + 1] = 1;
arr2[t + 2] = 1;
}
else{
arr2[t] = 1;
arr2[t + 1] = 0;
arr2[t + 2] = 0;
}
p += 1;
}
else{
if (arr[i + 2] == 1){
if (s[p + 1] == 48){
arr2[t] = 0;
arr2[t + 1] = 1;
arr2[t + 2] = 0;
}
else{
arr2[t] = 1;
arr2[t + 1] = 1;
arr2[t + 2] = 0;
}
p += 2;
}
else{
arr2[t] = 0;
arr2[t + 1] = 0;
arr2[t + 2] = 1;
p += 1;
}
}
}
else{
if (p == d){
s += "0";
}
if (s[p] == 49 && s[p + 1] == 49){
arr2[t] = 1;
arr2[t + 1] = 1;
arr2[t + 2] = 1;
}
else if (s[p] == 49 && s[p + 1] == 48){
arr2[t] = 1;
arr2[t + 1] = 0;
arr2[t + 2] = 1;
}
else if (s[p] == 48 && s[p + 1] == 49){
arr2[t] = 1;
arr2[t + 1] = 1;
arr2[t + 2] = 0;
}
else{
arr2[t] = 0;
arr2[t + 1] = 1;
arr2[t + 2] = 0;
}
p += 2;
}
t += 3;
}
for (i = 0; i < t; i += 1){
Set(i, arr2[i]);
}
return;
}
//int main(){
// for (i = 0; i < 40; i += 1){
// a[i] = i;
// }
// Anna(150, 1000000000000000000, 40, a);
//}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
int a[150];
string ss = "001000001000001000001000001000001000001000001000001000001000001000001000001000010010110010111110111010101111101110101101111110101101010010111111110101";
long long Bruno (int N, int A[]){
long long i, j, l, r, mid, p, q, k, t, n, m, b, c, d, ans, cnt, res, arr[1000005];
string s;
ans = 0;
s = " ";
for (i = 1; i <= N; i += 3){
if (A[i - 1] == 0 && A[i] == 0 && A[i + 1] == 0){
continue;
}
else if (A[i - 1] == 0 && A[i] == 0 && A[i + 1] == 1){
s += "0";
}
else if (A[i - 1] == 0 && A[i] == 1 && A[i + 1] == 0){
s += "00";
}
else if (A[i - 1] == 0 && A[i] == 1 && A[i + 1] == 1){
s += "1";
}
else if (A[i - 1] == 1 && A[i] == 0 && A[i + 1] == 0){
s += "1";
}
else if (A[i - 1] == 1 && A[i] == 0 && A[i + 1] == 1){
s += "10";
}
else if (A[i - 1] == 1 && A[i] == 1 && A[i + 1] == 0){
s += "01";
}
else{
s += "11";
}
// cout << s << "\n";
}
// cout << s << "\n";
for (i = 1; i < s.length(); i += 1){
ans += (long long)(s[i] - 48) * (1ll << (i - 1));
}
return ans;
}
//int main(){
// for (i = 0; i < 150; i += 1){
// a[i] = (long long)(ss[i]) - 48;
//// cout << a[i];
// }
//// cout << "\n";
// cout << Bruno(150, a);
//}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |