# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
556928 | cadmiumsky | Broken Device (JOI17_broken_device) | C++14 | 49 ms | 2492 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
deque<int> bits;
const int nmax = 165;
int occ[nmax];
vector<int> toset; //two
void myset(int val) { toset.push_back(val); }
void calc(int poz) {
int coef = (occ[poz] << 2) | (occ[poz + 1] << 1) | (occ[poz + 2]);
if(__builtin_popcount(coef) >= 2) {
myset(0);
myset(0);
myset(0);
return;
}
switch(coef) {
case 0b001: {
if(bits[0] == 0) {
if(bits[1] == 0) // 0
myset(1),
myset(0),
myset(0);
else // 01
myset(1),
myset(1),
myset(0),
bits.pop_front();
}
else // 1
myset(0),
myset(1),
myset(0);
break;
}
case 0b010: {
if(bits[0] == 0) // 0
myset(1),
myset(0),
myset(0);
else {
if(bits[1] == 0) // 10
myset(0),
myset(0),
myset(1);
else // 11
myset(1),
myset(0),
myset(1);
bits.pop_front();
}
break;
}
case 0b100: {
if(bits[0] == 0) // 0
myset(0),
myset(1),
myset(1);
else // 1
myset(1),
myset(0),
myset(1);
break;
}
case 0b000: {
int u = (bits[0] << 1) | bits[1];
switch(u) {
case 0b00:
myset(1),
myset(1),
myset(1);
break;
case 0b01:
myset(1),
myset(1),
myset(0);
break;
case 0b10:
myset(0),
myset(0),
myset(1);
break;
case 0b11:
myset(1),
myset(0),
myset(1);
break;
}
bits.pop_front();
}
}
bits.pop_front();
}
void Anna( int n, long long x, int k, int p[] ){
bits.clear();
toset.clear();
for(int i = 59; i >= 0; i--)
bits.push_back((x & (1LL << i)) > 0LL);
for(int i = 0; i <= 300; i++)
bits.push_back(0);
for(int i = 0; i < k; i++)
occ[p[i]] = 1;
for(int i = 0; i < n; i += 3)
calc(i);
for(int i = 0; i < n; i++)
Set(i, toset[i]);
return;
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
string rez;
void myset(string s) { rez += s;}
vector<int> a;
void calcB(int poz) {
int coef = (a[poz] << 2) | (a[poz + 1] << 1) | a[poz + 2];
switch(coef) {
case 0b111:
myset("00");
break;
case 0b110:
myset("01");
break;
case 0b101:
myset("11");
break;
case 0b011:
myset("0");
break;
case 0b001:
myset("10");
break;
case 0b010:
myset("1");
break;
case 0b100:
myset("0");
break;
case 0b000:
break;
}
return;
}
long long Bruno( int N, int A[] ){
for(int i = 0; i < N; i++)
a.push_back(A[i]);
for(int i = 0; i < N; i += 3)
calcB(i);
long long X = 0;
for(int i = 0; i < 60; i++)
X = (X << 1) + (long long)(rez[i] - '0');
a.clear();
rez = "";
return X;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |