#include "squares.h"
#include <vector>
std::vector<int> paint(int n) {
std::vector<int> labels(n + 1, 1);
std::vector<int> kolejne;
for(int mask=0;mask<(1<<9);mask++){
if((mask&3)==3||(mask&(1<<8))==(1<<8)) continue;
bool ok=true;
for(int t=0;t<6;t++)
if((mask & (7<<t)) == (7<<t))
ok=false;
if(ok)
kolejne.push_back(mask);
}
for(int i=0;12*i<n;i++){
for(int j=0;j<9&&12*i+j<n;j++) {
labels[12*i+j]=(kolejne[i]&(1<<j))!=0;
}
for(int j=9;j<12&&12*i+j<n;j++) labels[12*i+j]=1;
}
labels[n]=14;
return labels;
}
int find_location(int n, std::vector<int> c) {
if(*c.rbegin()==-1){
while(!c.empty()&&*c.rbegin()==-1){
c.pop_back();
}
return n-c.size();
}
int f=-1,val=0;
for (int i = 0; i < 14; i++) {
val|=(c[i]<<i);
}
for(int t=0;t<12;t++){
if((val&(7<<t))==(7<<t)){
if((val&(31<<t))==(31<<t)) continue;
if(t>0&&(val&(7<<(t-1)))==7<<(t-1)&&(val&(7<<(t+1)))!=7<<(t+1)) continue;
f=t;
}
}
int bitsonleft = std::min(f,9),nadmiarowe = f-bitsonleft;
int lowpart = (val>>nadmiarowe)&((1<<bitsonleft)-1);
int highpart = (val>>(f+3))&((1<<(9-bitsonleft))-1);
int bn=0;
std::vector<int> kolejne;
for(int mask=0;mask<(1<<9);mask++){
if((mask&3)==3||(mask&(1<<8))==(1<<8)) continue;
bool ok=true;
for(int t=0;t<6;t++)
if((mask & (7<<t)) == (7<<t))
ok=false;
if(ok)
kolejne.push_back(mask);
}
for(int i=0;i<kolejne.size()-1;i++){
if(((kolejne[i]>>(9-bitsonleft))&lowpart) == lowpart)
if((kolejne[i+1]&((1<<(9-bitsonleft))-1))==highpart){
bn=i+1;
break;
}
}
return 12*bn-(f+3);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |