Submission #417306

#TimeUsernameProblemLanguageResultExecution timeMemory
417306tqbfjotldAncient Machine (JOI21_ancient_machine)C++17
5 / 100
102 ms8572 KiB
#include "Anna.h" #include <vector> #include <string> using namespace std; ///log_3(2^N) +17 bits? void Anna(int N, std::vector<char> S) { int Xpos = -1; int Zpos = -1; for (int x = 0; x<N; x++){ if (S[x]=='Z') Zpos = x; if (Xpos==-1 && S[x]=='X') Xpos = x; } for (int x = 16; x>=0; x--){ Send((bool)(Xpos&(1<<x))); } while (S.size()%58!=(Xpos+1)%58){ S.push_back('X'); } for (int x = Xpos+1; x<N; x+=29){ long long state = 0; for (int y = 0; y<58; y+=2){ string t = ""; t.push_back(S[x+y]); t.push_back(S[x+y+1]); vector<string> opt0 = {"XX","XY","YX","YY"}; vector<string> opt1 = {"XZ","YZ","ZZ"}; vector<string> opt2 = {"ZX","ZY"}; state *= 3; for (auto x : opt0){ if (x==t) state += 0; } for (auto x : opt1){ if (x==t) state += 1; } for (auto x : opt2){ if (x==t) state += 2; } } for (int x = 45; x>=0; x--){ if (state&(1LL<<x)){ Send(1); } else Send(0); } //printf("%lld\n",state); } }
#include "Bruno.h" #include <vector> #include <cassert> #include <algorithm> using namespace std; void Bruno(int N, int L, std::vector<int> A) { // assert(L==N+17); int Xpos = 0; int Zpos = 0; for (int x = 0; x<17; x++){ Xpos = (Xpos<<1)+A[x]; } if (Xpos==(1<<17)-1){ for (int x = 0; x<N; x++){ Remove(x); } return; } vector<int> rem; for (int x = 0; x<Xpos; x++){ Remove(x); } int c = Xpos+1; for (int x = 17; x<A.size(); x+=46){ long long state = 0; for (int y = 0; y<46; y++){ state *= 2LL; state += (long long)A[x+y]; } //printf("%lld\n",state); vector<int> things; for (int x = 0; x<29; x++){ things.push_back(state%3); state /= 3; } reverse(things.begin(),things.end()); for (int y = 0; y<29; y++){ if (things[y]==0){ rem.push_back(c+2*y); rem.push_back(c+2*y+1); } else if (things[y]==1){ Remove(c+2*y); while (!rem.empty()){ Remove(rem.back()); rem.pop_back(); } Remove(c+y*2+1); } else if (things[y]==2){ while (!rem.empty()){ Remove(rem.back()); rem.pop_back(); } Remove(c+2*y); rem.push_back(c+y*2+1); } } c+=58; } Remove(Xpos); for (auto x : rem){ if (x<N) Remove(x); } }

Compilation message (stderr)

Anna.cpp: In function 'void Anna(int, std::vector<char>)':
Anna.cpp:18:23: warning: comparison of integer expressions of different signedness: 'std::vector<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   18 |     while (S.size()%58!=(Xpos+1)%58){
      |            ~~~~~~~~~~~^~~~~~~~~~~~~
Anna.cpp:10:9: warning: variable 'Zpos' set but not used [-Wunused-but-set-variable]
   10 |     int Zpos = -1;
      |         ^~~~

Bruno.cpp: In function 'void Bruno(int, int, std::vector<int>)':
Bruno.cpp:27:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     for (int x = 17; x<A.size(); x+=46){
      |                      ~^~~~~~~~~
Bruno.cpp:11:9: warning: unused variable 'Zpos' [-Wunused-variable]
   11 |     int Zpos = 0;
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...