| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1367799 | Aviansh | Mars (APIO22_mars) | C++20 | 0 ms | 3056 KiB |
#include "mars.h"
#include <bits/stdc++.h>
using namespace std;
vector<vector<array<int,2>>> reqs(int n){
n*=2;
n++;
n-=8;
vector<int>temp;
for(int i = 0;i<n;i++){
if(i%((n+3)/4)==0||i==n-1){
temp.push_back(i);
}
}
vector<vector<array<int,2>>>ans;
for(int i : temp){
vector<array<int,2>>cur;
for(int j : temp){
cur.push_back({i,j});
}
ans.push_back(cur);
}
return ans;
}
string process(vector<vector<string>> a, int i, int j, int k, int n) {
int curlen = 2*k+3;
int cntshift = max(0,curlen-11);
int prevlen = min(9,curlen-2);
if(k<n-2){
//routing phase
if(curlen<=9){
//still making 9x9s for each
char grid[curlen][curlen];
bool vis[curlen][curlen];
for(int i = 0;i<curlen;i++){
for(int j = 0;j<curlen;j++){
vis[i][j]=0;
}
}
//current grid made now extend to curlen
///fill using all in order to account for corner(literally) cases
for(int i = 0;i<3;i++){
for(int j = 0;j<3;j++){
for(int curi = 0;curi<prevlen;curi++){
for(int curj = 0;curj<prevlen;curj++){
int x = curi+i;
int y = curj+j;
if(!vis[x][y]){
vis[x][y]=1;
grid[x][y]=(a[i][j][curi*prevlen+curj]=='1');
}
}
}
}
}
string ret(100,'0');
int ind = 0;
for(int i = 0;i<curlen;i++){
for(int j = 0;j<curlen;j++){
ret[ind++]=(grid[i][j] ? '1' : '0');
}
}
return ret;
}
else{
//exact 9x9s made for all
//now must put them in correct place
if(i==0&&j==0){
return a[0][0];
}
vector<vector<array<int,2>>>tars = reqs(n);
for(int x = 0;x<tars.size();x++){
for(int y = 0;y<tars.size();y++){
array<int,2>pay = tars[x][y];
array<int,2>curr = {max(x,pay[0]-cntshift),max(y,pay[1]-cntshift)};
cntshift+=2;
array<int,2>nx = {max(x,pay[0]-cntshift),max(y,pay[1]-cntshift)};
cntshift-=2;
if(nx==(array<int,2>){i,j}){
//next position of this one is here
array<int,2>h = {curr[0]-i,curr[1]-j};
if(max(h[0],h[1])<=2&&min(h[0],h[1])>=0){
//possible
return a[h[0]][h[1]];
}
}
}
}
}
}
else if(k==n-2){
//second last phase. all bits should be where they need to be
int len = n*2+1;
vector<vector<array<int,2>>>pos;
if(len>=14){
//figure out using function
pos=reqs(n);
}
else{
for(int i = 0;i<5;i++){
vector<array<int,2>>cur;
for(int j = 0;j<5;j++){
cur.push_back({i,j});
}
pos.push_back(cur);
}
}
//pos has all the inds now must do the REAL thingy
if(i%2||j%2){
//odd not required.
return string(100,'0');
}
bool grid[len][len];
for(int i = 0;i<len;i++){
for(int j = 0;j<len;j++){
grid[i][j]=0;
}
}
if(i==0&&j==0){
//top left
int quadlen = (len+1)/2;
for(int x = 0;x<pos.size();x++){
for(int y = 0;y<pos.size();y++){
array<int,2>pay = pos[x][y];
array<int,2>curr = {max(x,pay[0]-cntshift),max(y,pay[1]-cntshift)};
curr = {curr[0]-i,curr[1]-j};
if(max(curr[0],curr[1])<=2&&min(curr[0],curr[1])>=0){
//in range so include
for(int i = 0;i<prevlen;i++){
for(int j = 0;j<prevlen;j++){
if(max(i+pay[0],j+pay[1])<quadlen)
grid[i+pay[0]][j+pay[1]]=(a[curr[0]][curr[1]][i*prevlen+j]=='1');
}
}
}
}
}
//grid made
int group[len][len];
for(int i = 0;i<len;i++){
for(int j = 0;j<len;j++){
group[i][j]=-1;
}
}
int cr = 0;
for(int i = 0;i<quadlen;i++){
for(int j = quadlen-1;j>=0;j--){
if(i==quadlen-1||j==quadlen-1){
if(grid[i][j]&&group[i][j]==-1){
//ungrouped
group[i][j]=cr++;
queue<array<int,2>>q;
q.push({i,j});
while(!q.empty()){
auto [x,y] = q.front();
q.pop();
if(x-1>=0&&grid[x-1][y]&&group[x-1][y]==-1){
group[x-1][y]=group[x][y];
q.push({x-1,y});
}
if(x+1<len&&grid[x+1][y]&&group[x+1][y]==-1){
group[x+1][y]=group[x][y];
q.push({x+1,y});
}
if(y-1>=0&&grid[x][y-1]&&group[x][y-1]==-1){
group[x][y-1]=group[x][y];
q.push({x,y-1});
}
if(y+1<len&&grid[x][y+1]&&group[x][y+1]==-1){
group[x][y+1]=group[x][y];
q.push({x,y+1});
}
}
}
}
}
}
//all have been grouped.
//count internal
int internal = 0;
for(int i = 0;i<quadlen;i++){
for(int j = 0;j<quadlen;j++){
if(group[i][j]==-1&&grid[i][j]){
internal++;
group[i][j]=cr++;
queue<array<int,2>>q;
q.push({i,j});
while(!q.empty()){
auto [x,y] = q.front();
q.pop();
if(x-1>=0&&grid[x-1][y]&&group[x-1][y]==-1){
group[x-1][y]=group[x][y];
q.push({x-1,y});
}
if(x+1<len&&grid[x+1][y]&&group[x+1][y]==-1){
group[x+1][y]=group[x][y];
q.push({x+1,y});
}
if(y-1>=0&&grid[x][y-1]&&group[x][y-1]==-1){
group[x][y-1]=group[x][y];
q.push({x,y-1});
}
if(y+1<len&&grid[x][y+1]&&group[x][y+1]==-1){
group[x][y+1]=group[x][y];
q.push({x,y+1});
}
}
}
}
}
string mask = "";
string F = "";
string B = "";
map<int,int>last;
bool ne = 0;
for(int i = 0;i<quadlen;i++){
for(int j = quadlen-1;j>=0;j--){
if(i==quadlen-1||j==quadlen-1){
if(grid[i][j]){
mask+="1";
if(!ne){
if(last.find(group[i][j])==last.end()){
//new
last[group[i][j]]=F.size();
F+="1";
B+="0";
}
else{
last[group[i][j]]=F.size();
F+="0";
B+="0";
}
}
ne=1;
}
else{
mask+="0";
ne=0;
}
}
}
}
for(pair<int,int>p:last){
B[p.second]='1';
}
while(mask.size()<41){
mask+="0";
}
while(F.size()<21){
F+="1";
}
while(B.size()<21){
B+="1";
}
string inter(10,'0');
for(int i = 0;i<10;i++){
if((1<<i)&internal){
inter[i]='1';
}
}
return inter+mask+F+B+string(7,'0');
}
else if(i==0&&j==2){
//top right
int quadlen = (len+1)/2;
for(int x = 0;x<pos.size();x++){
for(int y = 0;y<pos.size();y++){
array<int,2>pay = pos[x][y];
array<int,2>curr = {max(x,pay[0]-cntshift),max(y,pay[1]-cntshift)};
curr = {curr[0]-i,curr[1]-j};
if(max(curr[0],curr[1])<=2&&min(curr[0],curr[1])>=0){
//in range so include
for(int i = 0;i<prevlen;i++){
for(int j = 0;j<prevlen;j++){
if(i+pay[0]<quadlen&&j+pay[1]>=quadlen-1)
grid[i+pay[0]][j+pay[1]]=(a[curr[0]][curr[1]][i*prevlen+j]=='1');
}
}
}
}
}
//grid made
int group[len][len];
for(int i = 0;i<len;i++){
for(int j = 0;j<len;j++){
group[i][j]=-1;
}
}
int cr = 0;
for(int i = 0;i<len;i++){
for(int j = 0;j<len;j++){
if(i==quadlen-1||j==quadlen-1){
if(grid[i][j]&&group[i][j]==-1){
//ungrouped
group[i][j]=cr++;
queue<array<int,2>>q;
q.push({i,j});
while(!q.empty()){
auto [x,y] = q.front();
q.pop();
if(x-1>=0&&grid[x-1][y]&&group[x-1][y]==-1){
group[x-1][y]=group[x][y];
q.push({x-1,y});
}
if(x+1<len&&grid[x+1][y]&&group[x+1][y]==-1){
group[x+1][y]=group[x][y];
q.push({x+1,y});
}
if(y-1>=0&&grid[x][y-1]&&group[x][y-1]==-1){
group[x][y-1]=group[x][y];
q.push({x,y-1});
}
if(y+1<len&&grid[x][y+1]&&group[x][y+1]==-1){
group[x][y+1]=group[x][y];
q.push({x,y+1});
}
}
}
}
}
}
//all have been grouped.
//count internal
int internal = 0;
for(int i = 0;i<quadlen;i++){
for(int j = quadlen-1;j<len;j++){
if(group[i][j]==-1&&grid[i][j]){
internal++;
group[i][j]=cr++;
queue<array<int,2>>q;
q.push({i,j});
while(!q.empty()){
auto [x,y] = q.front();
q.pop();
if(x-1>=0&&grid[x-1][y]&&group[x-1][y]==-1){
group[x-1][y]=group[x][y];
q.push({x-1,y});
}
if(x+1<len&&grid[x+1][y]&&group[x+1][y]==-1){
group[x+1][y]=group[x][y];
q.push({x+1,y});
}
if(y-1>=0&&grid[x][y-1]&&group[x][y-1]==-1){
group[x][y-1]=group[x][y];
q.push({x,y-1});
}
if(y+1<len&&grid[x][y+1]&&group[x][y+1]==-1){
group[x][y+1]=group[x][y];
q.push({x,y+1});
}
}
}
}
}
string mask = "";
string F = "";
string B = "";
map<int,int>last;
bool ne = 0;
for(int i = 0;i<quadlen;i++){
for(int j = quadlen-1;j<len;j++){
if(i==quadlen-1||j==quadlen-1){
if(grid[i][j]){
mask+="1";
if(!ne){
if(last.find(group[i][j])==last.end()){
//new
last[group[i][j]]=F.size();
F+="1";
B+="0";
}
else{
last[group[i][j]]=F.size();
F+="0";
B+="0";
}
}
ne=1;
}
else{
mask+="0";
ne=0;
}
}
}
}
for(pair<int,int>p:last){
B[p.second]='1';
}
while(mask.size()<41){
mask+="0";
}
while(F.size()<21){
F+="1";
}
while(B.size()<21){
B+="1";
}
string inter(10,'0');
for(int i = 0;i<10;i++){
if((1<<i)&internal){
inter[i]='1';
}
}
return inter+mask+F+B+string(7,'0');
}
else if(j==0&&i==2){
//bottom left
int quadlen = (len+1)/2;
for(int x = 0;x<pos.size();x++){
for(int y = 0;y<pos.size();y++){
array<int,2>pay = pos[x][y];
array<int,2>curr = {max(x,pay[0]-cntshift),max(y,pay[1]-cntshift)};
curr = {curr[0]-i,curr[1]-j};
if(max(curr[0],curr[1])<=2&&min(curr[0],curr[1])>=0){
//in range so include
for(int i = 0;i<prevlen;i++){
for(int j = 0;j<prevlen;j++){
if(i+pay[0]>=quadlen-1&&j+pay[1]<quadlen)
grid[i+pay[0]][j+pay[1]]=(a[curr[0]][curr[1]][i*prevlen+j]=='1');
}
}
}
}
}
//grid made
int group[len][len];
for(int i = 0;i<len;i++){
for(int j = 0;j<len;j++){
group[i][j]=-1;
}
}
int cr = 0;
for(int i = 0;i<len;i++){
for(int j = 0;j<len;j++){
if(i==quadlen-1||j==quadlen-1){
if(grid[i][j]&&group[i][j]==-1){
//ungrouped
group[i][j]=cr++;
queue<array<int,2>>q;
q.push({i,j});
while(!q.empty()){
auto [x,y] = q.front();
q.pop();
if(x-1>=0&&grid[x-1][y]&&group[x-1][y]==-1){
group[x-1][y]=group[x][y];
q.push({x-1,y});
}
if(x+1<len&&grid[x+1][y]&&group[x+1][y]==-1){
group[x+1][y]=group[x][y];
q.push({x+1,y});
}
if(y-1>=0&&grid[x][y-1]&&group[x][y-1]==-1){
group[x][y-1]=group[x][y];
q.push({x,y-1});
}
if(y+1<len&&grid[x][y+1]&&group[x][y+1]==-1){
group[x][y+1]=group[x][y];
q.push({x,y+1});
}
}
}
}
}
}
//all have been grouped.
//count internal
int internal = 0;
for(int i = quadlen-1;i<len;i++){
for(int j = 0;j<quadlen;j++){
if(group[i][j]==-1&&grid[i][j]){
internal++;
group[i][j]=cr++;
queue<array<int,2>>q;
q.push({i,j});
while(!q.empty()){
auto [x,y] = q.front();
q.pop();
if(x-1>=0&&grid[x-1][y]&&group[x-1][y]==-1){
group[x-1][y]=group[x][y];
q.push({x-1,y});
}
if(x+1<len&&grid[x+1][y]&&group[x+1][y]==-1){
group[x+1][y]=group[x][y];
q.push({x+1,y});
}
if(y-1>=0&&grid[x][y-1]&&group[x][y-1]==-1){
group[x][y-1]=group[x][y];
q.push({x,y-1});
}
if(y+1<len&&grid[x][y+1]&&group[x][y+1]==-1){
group[x][y+1]=group[x][y];
q.push({x,y+1});
}
}
}
}
}
string mask = "";
string F = "";
string B = "";
map<int,int>last;
bool ne = 0;
for(int i = quadlen-1;i<len;i++){
for(int j = 0;j<quadlen;j++){
if(i==quadlen-1||j==quadlen-1){
if(grid[i][j]){
mask+="1";
if(!ne){
if(last.find(group[i][j])==last.end()){
//new
last[group[i][j]]=F.size();
F+="1";
B+="0";
}
else{
last[group[i][j]]=F.size();
F+="0";
B+="0";
}
}
ne=1;
}
else{
mask+="0";
ne=0;
}
}
}
}
for(pair<int,int>p:last){
B[p.second]='1';
}
while(mask.size()<41){
mask+="0";
}
while(F.size()<21){
F+="1";
}
while(B.size()<21){
B+="1";
}
string inter(10,'0');
for(int i = 0;i<10;i++){
if((1<<i)&internal){
inter[i]='1';
}
}
return inter+mask+F+B+string(7,'0');
}
else{
//i=2,j=2
//bottom right
int quadlen = (len+1)/2;
for(int x = 0;x<pos.size();x++){
for(int y = 0;y<pos.size();y++){
array<int,2>pay = pos[x][y];
array<int,2>curr = {max(x,pay[0]-cntshift),max(y,pay[1]-cntshift)};
curr = {curr[0]-i,curr[1]-j};
if(max(curr[0],curr[1])<=2&&min(curr[0],curr[1])>=0){
//in range so include
for(int i = 0;i<prevlen;i++){
for(int j = 0;j<prevlen;j++){
if(i+pay[0]>=quadlen-1&&j+pay[1]>=quadlen-1)
grid[i+pay[0]][j+pay[1]]=(a[curr[0]][curr[1]][i*prevlen+j]=='1');
}
}
}
}
}
//grid made
int group[len][len];
for(int i = 0;i<len;i++){
for(int j = 0;j<len;j++){
group[i][j]=-1;
}
}
int cr = 0;
for(int i = 0;i<len;i++){
for(int j = len-1;j>=0;j--){
if(i==quadlen-1||j==quadlen-1){
if(grid[i][j]&&group[i][j]==-1){
//ungrouped
group[i][j]=cr++;
queue<array<int,2>>q;
q.push({i,j});
while(!q.empty()){
auto [x,y] = q.front();
q.pop();
if(x-1>=0&&grid[x-1][y]&&group[x-1][y]==-1){
group[x-1][y]=group[x][y];
q.push({x-1,y});
}
if(x+1<len&&grid[x+1][y]&&group[x+1][y]==-1){
group[x+1][y]=group[x][y];
q.push({x+1,y});
}
if(y-1>=0&&grid[x][y-1]&&group[x][y-1]==-1){
group[x][y-1]=group[x][y];
q.push({x,y-1});
}
if(y+1<len&&grid[x][y+1]&&group[x][y+1]==-1){
group[x][y+1]=group[x][y];
q.push({x,y+1});
}
}
}
}
}
}
//all have been grouped.
//count internal
int internal = 0;
for(int i = quadlen-1;i<len;i++){
for(int j = len-1;j>=quadlen-1;j--){
if(group[i][j]==-1&&grid[i][j]){
internal++;
group[i][j]=cr++;
queue<array<int,2>>q;
q.push({i,j});
while(!q.empty()){
auto [x,y] = q.front();
q.pop();
if(x-1>=0&&grid[x-1][y]&&group[x-1][y]==-1){
group[x-1][y]=group[x][y];
q.push({x-1,y});
}
if(x+1<len&&grid[x+1][y]&&group[x+1][y]==-1){
group[x+1][y]=group[x][y];
q.push({x+1,y});
}
if(y-1>=0&&grid[x][y-1]&&group[x][y-1]==-1){
group[x][y-1]=group[x][y];
q.push({x,y-1});
}
if(y+1<len&&grid[x][y+1]&&group[x][y+1]==-1){
group[x][y+1]=group[x][y];
q.push({x,y+1});
}
}
}
}
}
string mask = "";
string F = "";
string B = "";
map<int,int>last;
bool ne = 0;
for(int i = quadlen-1;i<len;i++){
for(int j = len-1;j>=quadlen-1;j--){
if(i==quadlen-1||j==quadlen-1){
if(grid[i][j]){
mask+="1";
if(!ne){
if(last.find(group[i][j])==last.end()){
//new
last[group[i][j]]=F.size();
F+="1";
B+="0";
}
else{
last[group[i][j]]=F.size();
F+="0";
B+="0";
}
}
ne=1;
}
else{
mask+="0";
ne=0;
}
}
}
}
for(pair<int,int>p:last){
B[p.second]='1';
}
while(mask.size()<41){
mask+="0";
}
while(F.size()<21){
F+="1";
}
while(B.size()<21){
B+="1";
}
string inter(10,'0');
for(int i = 0;i<10;i++){
if((1<<i)&internal){
inter[i]='1';
}
}
return inter+mask+F+B+string(7,'0');
}
}
else{
//last phase must accumulate data from 4 corners
//they should be overlapping at edges
int len = n*2+1;
if(n==1){
//corner
bool grid[len][len];
bool vis[len][len];
for(int i = 0;i<len;i++){
for(int j = 0;j<len;j++){
grid[i][j]=(a[i][j][0]=='1');
vis[i][j]=0;
}
}
int ans = 0;
for(int i = 0;i<len;i++){
for(int j = 0;j<len;j++){
if(!vis[i][j]){
ans++;
queue<array<int,2>>q;
q.push({i,j});
vis[i][j]=1;
while(!q.empty()){
auto [x,y] = q.front();
q.pop();
if(x-1>=0&&grid[x-1][y]&&!vis[x-1][y]){
vis[x-1][y]=1;
q.push({x-1,y});
}
if(x+1<len&&grid[x+1][y]&&!vis[x+1][y]){
vis[x+1][y]=1;
q.push({x+1,y});
}
if(y-1>=0&&grid[x][y-1]&&!vis[x][y-1]){
vis[x][y-1]=1;
q.push({x,y-1});
}
if(y+1<len&&grid[x][y+1]&&!vis[x][y+1]){
vis[x][y+1]=1;
q.push({x,y+1});
}
}
}
}
}
string fin(100,'0');
for(int i = 0;i<30;i++){
if((1<<i)&ans){
fin[i]='1';
}
}
return fin;
}
int quadlen = (len+1)/2;
int ans = 0;
for(int i = 0;i<10;i++){
if(a[0][0][i]=='1'){
ans+=(1<<i);
}
if(a[0][2][i]=='1'){
ans+=(1<<i);
}
if(a[2][0][i]=='1'){
ans+=(1<<i);
}
if(a[2][2][i]=='1'){
ans+=(1<<i);
}
}
bool grid[len][len];
for(int i = 0;i<len;i++){
for(int j = 0;j<len;j++){
grid[i][j]=0;
if(i==quadlen-1){
//check bit
if(j<quadlen){
//use bottom left
grid[i][j]=(a[2][0][10+j]=='1');
}
else{
//use bottom right
grid[i][j]=(a[2][2][10+(len-j-1)]=='1');
}
}
else if(j==quadlen-1){
if(i<quadlen){
//top left
grid[i][j]=(a[0][0][10+i]=='1');
}
else{
//bottom left
grid[i][j]=(a[2][0][10+i]=='1');
}
}
}
}
//formed now must connect required edges
//top left
int ind = 0;
bool ne = 0;
vector<array<int,2>>stek;
map<array<int,2>,vector<array<int,2>>>g;
for(int i = 0;i<quadlen;i++){
for(int j = quadlen-1;j>=0;j--){
if(i==quadlen-1||j==quadlen-1){
if(!ne){
if(grid[i][j]){
ne=1;
//new segment indth
if(a[0][0][ind+51]=='1'){
//new beginning
stek.push_back({i,j});
}
else{
g[{i,j}].push_back(stek.back());
g[stek.back()].push_back({i,j});
}
if(a[0][0][ind+72]=='1'){
//end
stek.pop_back();
}
ind++;
}
}
if(!grid[i][j]){
ne=0;
}
}
}
}
//top right
ind = 0;
ne = 0;
assert(stek.size()==0);
for(int i = 0;i<quadlen;i++){
for(int j = quadlen-1;j<len;j++){
if(i==quadlen-1||j==quadlen-1){
if(!ne){
if(grid[i][j]){
ne=1;
//new segment indth
if(a[0][2][ind+51]=='1'){
//new beginning
stek.push_back({i,j});
}
else{
g[{i,j}].push_back(stek.back());
g[stek.back()].push_back({i,j});
}
if(a[0][2][ind+72]=='1'){
//end
stek.pop_back();
}
ind++;
}
}
if(!grid[i][j]){
ne=0;
}
}
}
}
//bottom left
ind = 0;
ne = 0;
assert(stek.size()==0);
for(int i = quadlen-1;i<len;i++){
for(int j = 0;j<quadlen;j++){
if(i==quadlen-1||j==quadlen-1){
if(!ne){
if(grid[i][j]){
ne=1;
//new segment indth
if(a[2][0][ind+51]=='1'){
//new beginning
stek.push_back({i,j});
}
else{
g[{i,j}].push_back(stek.back());
g[stek.back()].push_back({i,j});
}
if(a[2][0][ind+72]=='1'){
//end
stek.pop_back();
}
ind++;
}
}
if(!grid[i][j]){
ne=0;
}
}
}
}
//bottom right
ind = 0;
ne = 0;
assert(stek.size()==0);
for(int i = quadlen-1;i<len;i++){
for(int j = len-1;j>=quadlen-1;j--){
if(i==quadlen-1||j==quadlen-1){
if(!ne){
if(grid[i][j]){
ne=1;
//new segment indth
if(a[2][2][ind+51]=='1'){
//new beginning
stek.push_back({i,j});
}
else{
g[{i,j}].push_back(stek.back());
g[stek.back()].push_back({i,j});
}
if(a[2][2][ind+72]=='1'){
//end
stek.pop_back();
}
ind++;
}
}
if(!grid[i][j]){
ne=0;
}
}
}
}
map<array<int,2>,bool>vis;
for(int i = 0;i<len;i++){
for(int j = 0;j<len;j++){
if(!vis[{i,j}]&&grid[i][j]){
ans++;
}
else{
continue;
}
queue<array<int,2>>q;
q.push({i,j});
vis[{i,j}]=1;
while(!q.empty()){
auto [x,y] = q.front();
q.pop();
for(array<int,2>a:g[{x,y}]){
if(!vis[a]){
vis[a]=1;
q.push(a);
}
}
if(x-1>=0&&grid[x-1][y]&&!vis[{x-1,y}]){
vis[{x-1,y}]=1;
q.push({x-1,y});
}
if(x+1<len&&grid[x+1][y]&&!vis[{x+1,y}]){
vis[{x+1,y}]=1;
q.push({x+1,y});
}
if(y-1>=0&&grid[x][y-1]&&!vis[{x,y-1}]){
vis[{x,y-1}]=1;
q.push({x,y-1});
}
if(y+1<len&&grid[x][y+1]&&!vis[{x,y+1}]){
vis[{x,y+1}]=1;
q.push({x,y+1});
}
}
}
}
string fin(100,'0');
for(int i = 0;i<30;i++){
if((1<<i)&ans){
fin[i]='1';
}
}
return fin;
}
return string(100,'0');
}
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
