# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1078458 | anton | Broken Device (JOI17_broken_device) | C++17 | 27 ms | 3112 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;
#define ll long long
int N;
ll X;
void Anna( int _N, long long _X, int K, int P[] ){
ll XOR = 2233426368436346LL;
N = _N;
X = _X;
vector<int> base3;
X = X^XOR;
while(X>0){
base3.push_back(X%3LL);
X/=3LL;
}
vector<bool> broken(N, false);
for(int i = 0; i<K; i++){
broken[P[i]] = true;
}
vector<int> res(N);
auto mySet = [&](int pos, int val){
if(pos<N){
res[pos] = val;
}
};
vector<int> info_bits;
for(auto e: base3){
if(e==0){
info_bits.push_back(0);
info_bits.push_back(1);
}
else if(e==1){
info_bits.push_back(1);
info_bits.push_back(0);
}
else if(e==2){
info_bits.push_back(1);
info_bits.push_back(1);
}
}
/*for(auto e: info_bits){
cout<<e<<" ";
}
cout<<endl;*/
int cur_pos = 0;
int cur_bit =0;
while(cur_pos<N && cur_bit<info_bits.size()){
if(!info_bits[cur_bit] || !broken[cur_pos]){
if(!info_bits[cur_bit+1] || !broken[cur_pos+1]){
res[cur_pos] =info_bits[cur_bit];
res[cur_pos+1] = info_bits[cur_bit+1];
cur_bit+=2;
}
}
cur_pos+=2;
}
for(int i = 0; i<N; i++){
Set(i, res[i]);
}
}
#include "Brunolib.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
long long Bruno( int N, int A[] ){
ll XOR = 2233426368436346LL;
vector<ll> bits;
for(int i = 0; i<N; i+=2){
if(A[i]>0 || A[i+1]>0){
bits.push_back(A[i]);
bits.push_back(A[i+1]);
}
}
ll res= 0;
/*for(auto e: bits){
cout<<e<<" ";
}
cout<<endl;*/
vector<int> base3;
for(int i = 0; i<bits.size(); i+=2){
if(bits[i] == 0 && bits[i+1] == 0){
}
else{
if(bits[i] == 0 && bits[i+1] == 1){
base3.push_back(0);
}
if(bits[i] == 1&& bits[i+1] == 0){
base3.push_back(1);
}
if(bits[i] == 1 && bits[i+1] == 1){
base3.push_back(2);
}
}
}
ll X= 0;
while(base3.size()>0){
X*=3LL;
X += (ll)(base3.back());
base3.pop_back();
}
X = X^XOR;
return X;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |