Submission #799936

#TimeUsernameProblemLanguageResultExecution timeMemory
799936LIFPrisoner Challenge (IOI22_prison)C++17
65 / 100
12 ms2132 KiB
#include "prison.h" #include<bits/stdc++.h> #include <vector> using namespace std; int s[27][5001]; vector<int> v[5005]; std::vector<std::vector<int> > devise_strategy(int N) { int flag = 0; s[0][0] = 0; for(int i=1;i<=25;i+=2) { if(flag % 2 == 0) { s[i][0] = 1; s[i+1][0] = 1; } else { s[i][0] = 0; s[i+1][0] = 0; } flag++; } for(int i=1;i<=5000;i++) { int num = i; while(num > 0) { if(num % 2 == 1)v[i].push_back(1); else v[i].push_back(0); num /= 2; } for(int j=1;j<=20;j++)if(v[i].size() < 13)v[i].push_back(0); reverse(v[i].begin(),v[i].end()); } //0: for(int i=1;i<=5000;i++) { if(v[i][0] == 1)s[0][i] = 1; else s[0][i] = 2; } //1 to 23; flag = 0; int pos = 0; for(int i=1;i<=21;i+=2) { if(flag %2 == 0) // we check b; { for(int j=1;j<=5000;j++)if(v[j][pos] == 0)s[i][j] = -2; for(int j=1;j<=5000;j++)if(v[j][pos] == 1)s[i+1][j] = -1; } else { for(int j=1;j<=5000;j++)if(v[j][pos] == 0)s[i][j] = -1; for(int j=1;j<=5000;j++)if(v[j][pos] == 1)s[i+1][j] = -2; } for(int j=1;j<=5000;j++) { if(s[i][j] == -1 || s[i][j] == -2)continue; //check pos+1; if(v[j][pos+1] == 1)s[i][j] = i+2; else s[i][j] = i+3; } for(int j=1;j<=5000;j++) { if(s[i+1][j] == -1 || s[i+1][j] == -2)continue; //check pos+1; if(v[j][pos+1] == 1)s[i+1][j] = i+2; else s[i+1][j] = i+3; } flag++; pos++; } //23: for(int i=1;i<=5000;i++) { if(v[i][11] == 0)s[23][i] = -1; else { if(v[i][12] == 1)s[23][i] = -2; else s[23][i] = -1; } } //24: for(int i=1;i<=5000;i++) { if(v[i][11] == 1)s[24][i] = -2; else { if(v[i][12] == 1)s[24][i] = -2; else s[24][i] = -1; } } /*for(int i=22;i<=23;i++) { for(int j=1;j<=5000;j++) { cout<<i<<" "<<j<<" "<<s[i][j]<<endl; } }*/ /* //25:CHECK B for(int j=1;j<=5000;j++) { s[25][j] = -2; } //26: for(int j=1;j<=5000;j++) { s[26][j] = -1; } */ vector< vector<int> > ans; for(int i=0;i<=24;i++) { vector<int> temp; for(int j=0;j<=N;j++)temp.push_back(s[i][j]); ans.push_back(temp); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...