Submission #1204037

#TimeUsernameProblemLanguageResultExecution timeMemory
1204037Ghulam_JunaidBroken Device (JOI17_broken_device)C++20
0 / 100
2009 ms1344 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 timeMemoryGrader output
Fetching results...