제출 #830338

#제출 시각아이디문제언어결과실행 시간메모리
8303387mody죄수들의 도전 (IOI22_prison)C++17
56 / 100
16 ms1108 KiB
#include "prison.h" #include <bits/stdc++.h> using namespace std; typedef unsigned long long ll; vector<vector<int>> devise_strategy(int n) { vector<vector<int>> ans(27,vector<int>(n+1)); for(int i=1;i<=n;i++){ int curr=1; curr+=(i>>12)&1; ans[0][i]=curr; } int move=11; for(int i=1; i <=26;i++){ int curr=((i+1)/2)*2 + 1; int bag=(curr/2)%2; ans[i][0]=bag; for(int j=1; j <=n;j++){ curr=((i+1)/2)*2 + 1; if(i%2){ if(((j>>(move+1))&1)){ if(bag) ans[i][j]=-1; else ans[i][j]=-2; } else{ curr+=((j>>move)&1); ans[i][j]=min(curr,26); } } else{ if(((j>>(move+1))&1) == 0){ if(bag) ans[i][j]=-2; else ans[i][j]=-1; } else{ curr+=((j>>move)&1); ans[i][j]=min(curr,26); } } } if(i%2==0) move--; // cout << move << ' '; } return ans; } // void solve(){ // int n; cin >> n; // int counter=0; // vector<vector<int>> arr=devise_strategy(n); // // for(auto c : arr){ // // cout << counter << " "; // // for(auto i : c) cout << i << ' '; // // cout << endl; // // counter++; // // } // int curr=0; // int a=1000,b=1024; // while(true){ // if(arr[curr][0]==0) curr=arr[curr][a]; // else curr=arr[curr][b]; // if(curr<0){ // cout << curr << endl; // break; // } // // cout << curr << ' '; // } // } // int main(){ // ios::sync_with_stdio(false);cout.tie();cin.tie(); // int t=1; // // cin >> t; // while(t--){ // solve(); // } // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...