# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1204037 | Ghulam_Junaid | Broken Device (JOI17_broken_device) | C++20 | 2009 ms | 1344 KiB |
#include <bits/stdc++.h>
#include "Annalib.h"
using namespace std;
typedef long long ll;
int p, i, b;
char nxt[3];
map<int, string> put;
map<string, int> rev;
void solve(int allowed){
if (allowed & 3 == 0){
Set(i, 0), i++;
Set(i, 0), i++;
return ;
}
string tmp;
tmp += nxt[0], tmp += nxt[1];
int mask = rev[tmp];
if (mask & allowed == mask){
b += 2;
for (char c : tmp)
Set(i, c - '0'), i++;
return;
}
tmp = nxt[0];
mask = rev[tmp];
if (mask & allowed == mask){
b += 1;
for (char c : tmp)
Set(i, c - '0'), i++;
return;
}
Set(i, 0), i++;
Set(i, 0), i++;
}
void Anna(int n, ll X, int m, int pos[] ){
put[2] = "010";
put[3] = "011";
put[4] = "100";
put[5] = "101";
put[6] = "110";
put[7] = "111";
rev["1"] = 2;
rev["10"] = 3;
rev["0"] = 4;
rev["01"] = 5;
rev["00"] = 6;
rev["11"] = 7;
p = i = b = 0;
while (i < n){
if (b >= 60){
Set(i, 0), i++;
continue;
}
nxt[0] = '0' + !!((1ll << b) & X);
nxt[1] = '0' + !!((1ll << (b + 1)) & X);
nxt[2] = '0' + !!((1ll << (b + 2)) & X);
while (p < m and pos[p] < i)
p++;
int blocked = 0;
for (int pp = p; pp < m; pp++){
if (pos[pp] > i + 2) break;
blocked += (1 << (pos[pp] - i));
}
solve(7 - blocked);
}
}
#include <bits/stdc++.h>
#include "Brunolib.h"
using namespace std;
typedef long long ll;
ll Bruno(int N, int A[]){
map<string, string> rev;
rev["010"] = "1";
rev["011"] = "10";
rev["100"] = "0";
rev["101"] = "01";
rev["110"] = "00";
rev["111"] = "11";
int i = 0;
int b = 0;
ll x = 0;
while (i < N){
if (b >= 60)
return x;
if (!A[i] and !A[i + 1]){
i += 2;
continue;
}
string tmp;
for (int pp = i; pp < i + 2; pp ++)
tmp += A[i] + '0';
string B = rev[tmp];
for (char c : B){
x += (1ll << (b)) * (c - '0');
b++;
}
}
return x;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |