제출 #1153718

#제출 시각아이디문제언어결과실행 시간메모리
1153718duccnammAncient Machine (JOI21_ancient_machine)C++17
5 / 100
27 ms2376 KiB
#include<bits/stdc++.h> #include "Anna.h" using namespace std; void Anna(int n, vector<char>s) { for(int i=0;i<s.size();i++) if(s[i]=='X') { Send(0); Send(0); } else if(s[i]=='Y') { Send(0); Send(1); } else { Send(1); Send(0); } return; }
#include<bits/stdc++.h> #include "Bruno.h" using namespace std; int dp[300005],dd1,dd2,dd,trace[300005]; vector<int>vc; void Bruno(int n,int l,vector<int>a) { vector<char>s; vc.clear(); for(int i=0;i<l;i+=2) { if(a[i]==0&&a[i+1]==0) s.push_back('X'); if(a[i]==0&&a[i+1]==1) s.push_back('Y'); if(a[i]==1&&a[i+1]==0) s.push_back('Z'); } dp[0]=0; for(int i=1;i<(1<<n);i++) dp[i]=-1; for(int i=0;i<(1<<n);i++) { for(int j=0;j<n;j++) if(((i>>j)&1)==0) { if(s[j]=='Y') { dd1=dd2=-1; for(int z=j+1;z<n;z++) if(((i>>z)&1)==0) { dd1=z; break; } for(int z=j-1;z>=0;z--) if(((i>>z)&1)==0) { dd2=z; break; } if(dd1!=-1&&dd2!=-1&&s[dd1]=='Z'&&s[dd2]=='X') { if(dp[i+(1<<j)]<dp[i]+1) { dp[i+(1<<j)]=dp[i]+1; trace[i+(1<<j)]=j; } } else { if(dp[i+(1<<j)]<dp[i]) { dp[i+(1<<j)]=dp[i]; trace[i+(1<<j)]=j; } } } else if(dp[i+(1<<j)]<dp[i]) { dp[i+(1<<j)]=dp[i]; trace[i+(1<<j)]=j; } } } dd=(1<<n)-1; while(dd!=0) { vc.push_back(trace[dd]); dd-=(1<<trace[dd]); } reverse(vc.begin(),vc.end()); for(int i=0;i<vc.size();i++) Remove(vc[i]); return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...