Submission #730707

#TimeUsernameProblemLanguageResultExecution timeMemory
730707FidanPrisoner Challenge (IOI22_prison)C++17
0 / 100
1 ms212 KiB
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
#define rep(i, a, b) for(ll i=ll(a); i<ll(b); i++)
#define repn(i, a, b) for(ll i=ll(b)-1; i>=ll(a); i--)
#define all(v) (v.begin(), v.end())
#define pb push_back
#define ff first
#define ss second
vector<vector<ll>> devise_strategy(int n){
	ll x=24;
	vector<vector<ll>> s(x, vector<ll> (n+1));
	rep(i, 0, x){
		if(i%4==0 || i%4==1){
			s[i][0]=0;
		}
		else{
			s[i][0]=1;
		}
	}
	rep(j, 1, n+1){
		if(j%4>=2) s[1][j]=-1;
		else s[1][j]=-2;
	}
	rep(i, 2, 4){
		rep(j, 1, n+1){
			ll k=j/4%2;
			if(k==1 && i==2){
				s[i][j]=-1;
			}
			else if(k==0 && i==3){
				s[i][j]=-2;
			}
			else{
				if(j%4==0){
					s[i][j]=-2;
				}
				else if(j%4==3){
					s[i][j]=-1;
				}
				else{
					s[i][j]=1;
				}
			}
		}
	}
	vector<ll> pw(x, 1);
	rep(i, 1, x){
		pw[i]=2*pw[i-1];
	}
	rep(i, 4, x){
		ll a=(i+2)/2;
		rep(j, 1, n+1){
			if(i%2==0){
				if((j&pw[a])>0){
					if(i%4==2){
						s[i][j]=-1;
					}
					else{
						s[i][j]=-2;
					}
				}
				else{
					s[i][j]=i-2;
					if((j&pw[a-1])>0) s[i][j]++;
				}
			}
			else{
				if((j&pw[a])>0){
					s[i][j]=i-3;
					if((j&pw[a-1])>0) s[i][j]++;
				}
				else{
					if(i%4==1){
						s[i][j]=-1;
					}
					else{
						s[i][j]=-2;
					}
				}
			}
		}
	}
	rep(j, 1, n+1){
		if(j>=4096) s[0][j]=23;
		else s[0][j]=22;
	}
	return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...