Submission #417330

#TimeUsernameProblemLanguageResultExecution timeMemory
417330errorgornAncient Machine (JOI21_ancient_machine)C++17
5 / 100
84 ms9420 KiB
#include "Anna.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define ii pair<ll,ll> #define fi first #define se second #define endl '\n' #define puf push_front #define pof pop_front #define pub push_back #define pob pop_back #define lb lower_bound #define ub upper_bound #define rep(x,s,e) for (auto x=s-(s>e);x!=e-(s>e);(s<e?x++:x--)) #define all(x) (x).begin(),(x).end() #define sz(x) (int) (x).size() namespace { int n; string s; const string ss[]={"?X","?Y","?Z","XY","YX","YZ","ZX","ZY"}; } //XZ is useless just make it Z? void Anna(int N, std::vector<char> S) { n=N; rep(x,0,n) s+=S[x]; if (n%2==1) s+=s.back(),n++; for (int x=0;x<n;x+=2){ if (s[x]==s[x+1]) s[x]='?'; string sub=s.substr(x,2); if (sub=="XZ") sub="?Z"; rep(bm,0,8) if (sub==ss[bm]){ //cout<<"bitmask: "<<bm<<endl; int curr=4; rep(y,0,3){ if (bm&curr) Send(1); else Send(0); curr>>=1; } } } }
#include "Bruno.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define ii pair<ll,ll> #define fi first #define se second #define endl '\n' #define puf push_front #define pof pop_front #define pub push_back #define pob pop_back #define lb lower_bound #define ub upper_bound #define rep(x,s,e) for (auto x=s-(s>e);x!=e-(s>e);(s<e?x++:x--)) #define all(x) (x).begin(),(x).end() #define sz(x) (int) (x).size() namespace { int n,l; vector<int> bits; string s; const string ss[]={"?X","?Y","?Z","XY","YX","YZ","ZX","ZY"}; } // namespace void Bruno(int N, int L, std::vector<int> A) { n=N,l=L,bits=A; //for (auto &it:bits) cout<<it<<" "; cout<<endl; rep(x,0,l/3){ int num=4*bits[x*3]+2*bits[x*3+1]+bits[x*3+2]; //cout<<"received: "<<num<<endl; s+=ss[num]; } if (n%2==1) s.erase(s.begin()+n-1); //cout<<s<<endl; vector<int> stk; rep(x,0,n){ if (s[x]=='X'){ if (sz(stk)%2==0) stk.pub(x); else Remove(x); } else if (s[x]=='Y'){ if (sz(stk)%2==1) stk.pub(x); else Remove(x); } else if (s[x]=='Z'){ while (sz(stk)>1){ Remove(stk.back()); stk.pob(); } Remove(x); } else{ Remove(x); } } while (!stk.empty()){ Remove(stk.back()); stk.pob(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...