제출 #1234674

#제출 시각아이디문제언어결과실행 시간메모리
1234674mariza죄수들의 도전 (IOI22_prison)C++20
56 / 100
8 ms1288 KiB
#include "prison.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; vector<vector<int>> devise_strategy(int n) { vector<vector<int>> ans(27,vector<int>(n+1,0)); for(ll w=0; w<=26; w++){ ll c=((w+1)/2)%2, cbit=12-(w+1)/2, lbit=cbit+1; // cout<<w<<" "<<c<<" "<<cbit<<" "<<lbit<<" "<<(w%2)<<endl; ans[w][0]=c; if(w==0){ for(ll a=1; a<=n; a++){ ll ca=(a&(1ll<<cbit)); if(ca>0) ans[w][a]=1; else ans[w][a]=2; } } else if(w>=25){ for(ll b=1; b<=n; b++){ ll la=(w%2)*(1ll<<lbit), lb=(b&(1ll<<lbit)), cb=(b&(1ll<<cbit)); // cout<<w<<" "<<b<<": "<<lb<<" "<<la<<" "<<cb<<endl; if(lb>la) ans[w][b]=-1; else if(lb<la) ans[w][b]=-2; else ans[w][b]=-2; } } else if(c==0){ for(ll a=1; a<=n; a++){ ll lb=(w%2)*(1ll<<lbit), la=(a&(1ll<<lbit)), ca=(a&(1ll<<cbit)); // cout<<w<<" "<<a<<": "<<lb<<" "<<la<<" "<<ca<<endl; if(lb>la) ans[w][a]=-1; else if(lb<la) ans[w][a]=-2; else if(ca>0) ans[w][a]=2*(13-cbit)-1; else ans[w][a]=2*(13-cbit); } } else{ for(ll b=1; b<=n; b++){ ll la=(w%2)*(1ll<<lbit), lb=(b&(1ll<<lbit)), cb=(b&(1ll<<cbit)); // cout<<w<<" "<<b<<": "<<lb<<" "<<la<<" "<<cb<<endl; if(lb>la) ans[w][b]=-1; else if(lb<la) ans[w][b]=-2; else if(cb>0) ans[w][b]=2*(13-cbit)-1; else ans[w][b]=2*(13-cbit); } } } // for(ll w=0; w<=26; w++){ // for(ll x=0; x<=n; x++){ // cout<<w<<"-"<<x<<":"<<ans[w][x]<<" "; // } // cout<<endl; // } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...