Submission #867901

#TimeUsernameProblemLanguageResultExecution timeMemory
867901buczPrisoner Challenge (IOI22_prison)C++17
0 / 100
5 ms1116 KiB
//NORMAL
#include <bits/stdc++.h>
using namespace std; 
typedef long long ll;
#define pb push_back
#define st first
#define nd second
const int M=1e6+50;
//const int MOD=1e9+7;
//BUCZ®, 2023
//CZEMU TE ZADANIA ZAWSZE MAJA TAKIE OBVIOUS ROZWIAZANIA
//SZUKAC OPTYMALIZACJI!!!

int bity_index[10000][10];

void oblicz_bity(){
   for(int i=0;i<10000;i++){
      int x=i;
      for(int j=9;j>-1;j--){
         bity_index[i][j]=x%3;
         x=x/3;
      }
   }
}

vector<vector<int>>devise_strategy (int N){
   ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
   vector<vector<int>> wynik(30);
   oblicz_bity();
   //int N=12;
   //for(int i=0;i<10;i++){
      //cout << bity_index[192][i];
   //}
   for(int i=0;i<30;i++){
      int index = i%10;
      int bitek = i/10;
      
      wynik[i].resize(N+1);
      wynik[i][0]=index%2;
      
      int moj=-1-index%2;
      int twoj=-2+index%2;
      for(int j=1; j<=N;j++){
         if(j==1)wynik[i][j]=moj;
         else if(j==N)wynik[i][j]=twoj;
         else if(bitek < bity_index[j][index])wynik[i][j]=twoj;
         else {
            wynik[i][j]=index+1+10*bity_index[j][index+1];
         }
      }
   }
   
   /*for(int i=0;i<30;i++){
         for(int j=1; j<=N;j++){
         cout << wynik[i][j] << " ";
      }
      cout << "\n";
   }*/
      return wynik;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...