Submission #1012502

#TimeUsernameProblemLanguageResultExecution timeMemory
1012502UnforgettableplAncient Machine (JOI21_ancient_machine)C++17
0 / 100
7 ms1940 KiB
#include "Anna.h" #include <vector> #include <bits/stdc++.h> using namespace std; namespace { vector<int> fib(65); void genFib(){ fib[1] = 1; for(int i=2;i<65;i++)fib[i]=fib[i-1]+fib[i-2]; } void blockp(vector<int> block){ int ans = 0; for(int i=0;i<block.size();i++){ if(block[i])ans+=fib[block.size()-i+1]; } for(int bit=0;bit<44;bit++)Send(min(1,ans&(1<<bit))); } void process(vector<int> arr){ genFib(); for(int blocks=0;blocks<1588;blocks++){ vector<int> curr; for(int i=0;i<63;i++)curr.emplace_back(arr[blocks*40+i]); blockp(curr); } } } void Anna(int N, std::vector<char> S) { bool foundX = false; S.emplace_back('$'); vector<int> bits; int founder = -2; bool edge = false; for(int i=0;i<N;i++){ if(S[i]=='X'){ if(foundX)bits.emplace_back(0); else { foundX = true; founder = i; bits.emplace_back(1); } } else if(S[i]=='Y'){ bits.emplace_back(0); } else if(S[i]=='Z'){ if(!foundX or S[i+1]=='Z' or i-1==founder){ bits.emplace_back(0); if(i-1==founder and S[i+1]!='Z')edge = true; } else bits.emplace_back(1); } } while(bits.size()<100044)bits.emplace_back(0); process(bits); if(edge)Send(0); }
#include "Bruno.h" #include <vector> #include <bits/stdc++.h> using namespace std; namespace { vector<int> fib(65); void genFib(){ fib[1] = 1; for(int i=2;i<65;i++)fib[i]=fib[i-1]+fib[i-2]; } vector<int> blockp(int tar){ vector<int> ans = {0}; for(int i=0;i<63;i++){ if(ans.back()==0 and fib[63-i+1]<=tar){ ans.emplace_back(1); tar-=fib[63-i+1]; } else ans.emplace_back(0); } ans.erase(ans.begin()); return ans; } vector<int> process(vector<int> arr){ genFib(); vector<int> res; for(int block=0;block<1588;block++){ int curr = 0; for(int i=0;i<44;i++)if(arr[block*44+i])curr|=(1<<i); auto ans = blockp(curr); for(int&i:ans)res.emplace_back(i); } return res; } } // namespace void Bruno(int N, int L, std::vector<int> A) { vector<int> PR; // Process A into PR PR = process(A); PR.erase(PR.begin()+N,PR.end()); // Processing end vector<bool> vis(N); vector<int> po; for(int i=0;i<N;i++){ if(PR[i]==1)po.emplace_back(i); } if(L==69873){ po.insert(po.begin()+1,po[0]+1); } for(int x=1;x<po.size();x++){ for(int i=po[x]-1;i>po[x-1];i--){ Remove(i); vis[i]=true; } vis[po[x]]=true; Remove(po[x]); } for(int i=0;i<N;i++)if(!vis[i])Remove(i); }

Compilation message (stderr)

Anna.cpp: In function 'void {anonymous}::blockp(std::vector<int>)':
Anna.cpp:15:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |     for(int i=0;i<block.size();i++){
      |                 ~^~~~~~~~~~~~~

Bruno.cpp: In function 'void Bruno(int, int, std::vector<int>)':
Bruno.cpp:50:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     for(int x=1;x<po.size();x++){
      |                 ~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...