# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1263188 | SzymonKrzywda | Broken Device (JOI17_broken_device) | C++20 | 19 ms | 1344 KiB |
#include "Annalib.h"
#include <vector>
using namespace std;
void Anna( int N, long long X, int K, int P[] ){
vector<int> rozklad;
for (int i = 0; i < 151; i++) {
rozklad.push_back(X % 2);
X /= 2;
}
vector<bool> wartosci(N, 0);
for (int i = 0; i < K; i++) wartosci[P[i]] = 1;
int akt = 0;
for( int i = 0; i < N; i += 3 ){
int ile_z = wartosci[i] + wartosci[i + 1] + wartosci[i + 2];
if (ile_z >= 2) {
Set(i, 0);
Set(i + 1, 0);
Set(i + 2, 0);
continue;
}
if (ile_z == 0) {
if (rozklad[akt] == 0 && rozklad[akt + 1] == 0) {
Set(i, 0);
Set(i + 1, 1);
Set(i + 2, 0);
}
else if (rozklad[akt] == 0 && rozklad[akt + 1] == 1) {
Set(i, 1);
Set(i + 1, 1);
Set(i + 2, 0);
}
else if (rozklad[akt] == 1 && rozklad[akt + 1] == 1) {
Set(i, 1);
Set(i + 1, 1);
Set(i + 2, 1);
}
else {
Set(i, 1);
Set(i + 1, 0);
Set(i + 2, 1);
}
akt += 2;
}
else {
if (rozklad[akt] == 1) {
if (wartosci[i]) {
Set(i, 0);
Set(i + 1, 1);
Set(i + 2, 1);
}
else {
Set(i, 1);
Set(i + 1, 0);
Set(i + 2, 0);
}
akt++;
}
else {
if (!wartosci[i + 2]) {
Set(i, 0);
Set(i + 1, 0);
Set(i + 2, 1);
}
else{
if (rozklad[akt + 1] == 0) {
Set(i, 0);
Set(i + 1, 1);
Set(i + 2, 0);
}
else {
Set(i, 1);
Set(i + 1, 1);
Set(i + 2, 0);
}
}
}
}
}
}
#include "Brunolib.h"
#include <iostream>
using namespace std;
long long Bruno( int N, int A[] ){
long long w = 0;
__int128_t akt = 1;
//cout << "DUPA\n";
for (int i = 0; i < 9; i += 3) {
// cout << A[i] << ' ' << A[i + 1] << ' ' << A[i + 1] << '\n';
if (akt > 1e18) continue;
if (A[i] == 0 && A[i + 1] == 0 && A[i + 2] == 0) {continue;}
if (A[i] == 0 && A[i + 1] == 0 && A[i + 2] == 1) {
akt *= 2;
}
if (A[i] == 0 && A[i + 1] == 1 && A[i + 2] == 0) {
akt *= 4;
}
if (A[i] == 0 && A[i + 1] == 1 && A[i + 2] == 1) {
w += akt;
akt *= 2;
}
if (A[i] == 1 && A[i + 1] == 0 && A[i + 2] == 0) {
w += akt;
akt *= 2;
}
if (A[i] == 1 && A[i + 1] == 0 && A[i + 2] == 1) {
w += akt;
akt *= 4;
}
if (A[i] == 1 && A[i + 1] == 1 && A[i + 2] == 0) {
akt *= 2;
w += akt;
akt *= 2;
}
if (A[i] == 1 && A[i + 1] == 1 && A[i + 2] == 1) {
w += akt;
akt *= 2;
w += akt;
akt *= 2;
}
}
return (long long)akt;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |