Submission #556928

#TimeUsernameProblemLanguageResultExecution timeMemory
556928cadmiumskyBroken Device (JOI17_broken_device)C++14
0 / 100
49 ms2492 KiB
#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 timeMemoryGrader output
Fetching results...