제출 #965632

#제출 시각아이디문제언어결과실행 시간메모리
965632emptypringlescanAncient Machine (JOI21_ancient_machine)C++17
99 / 100
54 ms9872 KiB
#include "Anna.h" #include <bits/stdc++.h> using namespace std; #define int long long long long lt[]={1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296}; int kth(vector<int> bits){ int l=bits.size(); int ret=0; for(int i=0; i<l; i++){ if(bits[i]) ret+=lt[l-i-1]; } return ret; } void Anna(int32_t N, vector<char> S){ bool st=true; vector<int> old; int fir=0; for(int i=0; i<N; i++){ if(st&&S[i]=='X') old.push_back(0),st=false,fir=i; else if(st||S[i]=='Z') old.push_back(1); else old.push_back(0); } for(int i=0; i<(41-N%40)%40; i++) old.push_back(0); for(int i=0; i<(int)old.size()-1; i++) if(old[i+1]&old[i]) old[i]=0; for(int i=0; i<N; i+=40){ vector<int> yey; for(int j=0; j<40; j++){ yey.push_back(old[i+j]); } int x=kth(yey); for(int j=0; j<28; j++) Send((x>>j)&1); } if(fir==0) Send(0); }
#include "Bruno.h" #include <bits/stdc++.h> using namespace std; #define int long long long long lt[]={1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296}; vector<int> htk(int x){ vector<int> ret(40); for(int i=0; i<40; i++){ if(x>=lt[40-i-1]){ ret[i]=1; x-=lt[40-i-1]; } } return ret; } void Bruno(int32_t N, int32_t L, std::vector<int32_t> b) { vector<int> A; assert(L%28==0||L%28==1); for(int i=0; i<L-L%28; i+=28){ int x=0; for(int j=0; j<28; j++){ if(b[i+j]) x+=1ll<<j; } vector<int> yey=htk(x); for(int j:yey) A.push_back(j); } stack<int> st; bool s=true; if(L%28==1) s=false; for(int i=0; i<N; i++){ if(A[i]==0&&s==false) st.push(i); else{ while(st.size()>1){ Remove(st.top()); st.pop(); } Remove(i); if(A[i]==1) s=false; } } while(!st.empty()){ Remove(st.top()); st.pop(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...