답안 #957647

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
957647 2024-04-04T06:59:58 Z vjudge1 화성 (APIO22_mars) C++17
14 / 100
11 ms 4380 KB
#include <bits/stdc++.h>
#define f first
#define s second
#define ent '\n'
//#define int long long

#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3")

const int dx[]={-1, 1, 0, 0, 0};
const int dy[]={0, 0, 1, -1, 0};
typedef long long ll;
using namespace std;
const int mx=1e6+12;
const int mod=998244353;
const bool T=1;

int used[200][200];

int pos(int x,int y,int n){
    return x*n+y;
}

void dfs(int x,int y,int n){
    used[x][y]=1;
    for(int i=0;i<4;i++){
        int x1=dx[i]+x, y1=dy[i]+y;
        if(min(x1, y1)>=0 && max(x1, y1)<n && !used[x1][y1]){
            dfs(x1, y1, n);
        }
    }
}

std::string process(std::vector<std::vector<std::string> > a,int x,int y,int k,int n){
    k++;
    if(k==5){
        string ans="";
        while(ans.size()<100){
            ans+='0';
        }
        for(int i=x;i<x+2*k+1;i++){
            for(int j=y;j<y+2*k+1;j++){
                int lx=min(i, x+2), rx=min(j, y+2);
                used[i][j]=(a[lx-x][rx-y][pos(i-lx, j-rx, 2*k-1)] == '1');
            }
        }
        if(k==n){
            for(int i=0;i<2*n+1;i++){
                for(int j=0;j<2*n+1;j++){
                    used[i][j]=1-used[i][j];
                }
            }
            int cnt=0;
            for(int i=0;i<2*n+1;i++){
                for(int j=0;j<2*n+1;j++){
                    if(!used[i][j]){
                        cnt++;
                        dfs(i, j, 2*n+1);
                    }
                }
            }
            for(int i=0;i<100;i++){
                if(i>=20){
                    ans[i]='0';
                }
                else{
                    if((cnt&(1<<i))){
                        ans[i]='1';
                    }
                    else{
                        ans[i]='0';
                    }
                }
            }
            return ans;
        }
        int lx = x, ly = y, rx = x + 9, ry = y+9;
        if(x==2){
            lx++, rx++;
        }
        if(y==2){
            ly++, ry++;
        }
        int pos=0;
        for(int i=lx;i<=rx;i++){
            for(int j=ly;j<=ry;j++){
                ans[pos]=used[i][j] + '0';
                pos++;
            }
        }
        return ans;
    }
    string ans="";
    while(ans.size()<100){
        ans+='0';
    }
    for(int i=x;i<x+2*k+1;i++){
        for(int j=y;j<y+2*k+1;j++){
            int lx=min(i, x+2), rx=min(j, y+2);
            ans[pos(i-x, j-y, 2*k+1)]=a[lx-x][rx-y][pos(i-lx, j-rx, 2*k-1)];
        }
    }
    if(k==n){
        if(k==6){
            int pos=0;
            for(int i=0;i<10;i++){
                for(int j=0;j<10;j++){
                    used[i][j]=(a[0][0][pos] == '0');
                    pos++;
                }
            }
            pos=0;
            for(int i=3;i<13;i++){
                for(int j=0;j<10;j++){
                    used[i][j]=(a[2][0][pos] == '0');
                    pos++;
                }
            }
            pos=0;
            for(int i=3;i<13;i++){
                for(int j=3;j<13;j++){
                    used[i][j]=(a[2][2][pos] == '0');
                    pos++;
                }
            }
            pos=0;
            for(int i=0;i<10;i++){
                for(int j=3;j<13;j++){
                    used[i][j]=(a[0][2][pos] == '0');
                    pos++;
                }
            }
        }
        else{
            for(int i=0;i<2*n+1;i++){
                for(int j=0;j<2*n+1;j++){
                    used[i][j]=(ans[pos(i, j, 2*n+1)] == '0');
                }
            }
        }
        int cnt=0;
        for(int i=0;i<2*n+1;i++){
            for(int j=0;j<2*n+1;j++){
                if(!used[i][j]){
                    cnt++;
                    dfs(i, j, 2*n+1);
                }
            }
        }
        for(int i=0;i<100;i++){
            if(i>=20){
                ans[i]='0';
            }
            else{
                if((cnt&(1<<i))){
                    ans[i]='1';
                }
                else{
                    ans[i]='0';
                }
            }
        }
    }
    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 3752 KB Output is correct
2 Correct 5 ms 3760 KB Output is correct
3 Correct 8 ms 4200 KB Output is correct
4 Correct 6 ms 3880 KB Output is correct
5 Correct 6 ms 4052 KB Output is correct
6 Correct 6 ms 4288 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 3752 KB Output is correct
2 Correct 5 ms 3760 KB Output is correct
3 Correct 8 ms 4200 KB Output is correct
4 Correct 6 ms 3880 KB Output is correct
5 Correct 6 ms 4052 KB Output is correct
6 Correct 6 ms 4288 KB Output is correct
7 Correct 8 ms 4224 KB Output is correct
8 Correct 8 ms 4380 KB Output is correct
9 Correct 8 ms 3424 KB Output is correct
10 Correct 8 ms 3752 KB Output is correct
11 Correct 9 ms 3768 KB Output is correct
12 Correct 8 ms 4184 KB Output is correct
13 Correct 11 ms 4060 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 3752 KB Output is correct
2 Correct 5 ms 3760 KB Output is correct
3 Correct 8 ms 4200 KB Output is correct
4 Correct 6 ms 3880 KB Output is correct
5 Correct 6 ms 4052 KB Output is correct
6 Correct 6 ms 4288 KB Output is correct
7 Correct 8 ms 4224 KB Output is correct
8 Correct 8 ms 4380 KB Output is correct
9 Correct 8 ms 3424 KB Output is correct
10 Correct 8 ms 3752 KB Output is correct
11 Correct 9 ms 3768 KB Output is correct
12 Correct 8 ms 4184 KB Output is correct
13 Correct 11 ms 4060 KB Output is correct
14 Incorrect 2 ms 472 KB Incorrect
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 3752 KB Output is correct
2 Correct 5 ms 3760 KB Output is correct
3 Correct 8 ms 4200 KB Output is correct
4 Correct 6 ms 3880 KB Output is correct
5 Correct 6 ms 4052 KB Output is correct
6 Correct 6 ms 4288 KB Output is correct
7 Correct 8 ms 4224 KB Output is correct
8 Correct 8 ms 4380 KB Output is correct
9 Correct 8 ms 3424 KB Output is correct
10 Correct 8 ms 3752 KB Output is correct
11 Correct 9 ms 3768 KB Output is correct
12 Correct 8 ms 4184 KB Output is correct
13 Correct 11 ms 4060 KB Output is correct
14 Incorrect 2 ms 472 KB Incorrect
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 3752 KB Output is correct
2 Correct 5 ms 3760 KB Output is correct
3 Correct 8 ms 4200 KB Output is correct
4 Correct 6 ms 3880 KB Output is correct
5 Correct 6 ms 4052 KB Output is correct
6 Correct 6 ms 4288 KB Output is correct
7 Correct 8 ms 4224 KB Output is correct
8 Correct 8 ms 4380 KB Output is correct
9 Correct 8 ms 3424 KB Output is correct
10 Correct 8 ms 3752 KB Output is correct
11 Correct 9 ms 3768 KB Output is correct
12 Correct 8 ms 4184 KB Output is correct
13 Correct 11 ms 4060 KB Output is correct
14 Incorrect 2 ms 472 KB Incorrect
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 3752 KB Output is correct
2 Correct 5 ms 3760 KB Output is correct
3 Correct 8 ms 4200 KB Output is correct
4 Correct 6 ms 3880 KB Output is correct
5 Correct 6 ms 4052 KB Output is correct
6 Correct 6 ms 4288 KB Output is correct
7 Correct 8 ms 4224 KB Output is correct
8 Correct 8 ms 4380 KB Output is correct
9 Correct 8 ms 3424 KB Output is correct
10 Correct 8 ms 3752 KB Output is correct
11 Correct 9 ms 3768 KB Output is correct
12 Correct 8 ms 4184 KB Output is correct
13 Correct 11 ms 4060 KB Output is correct
14 Incorrect 2 ms 472 KB Incorrect
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 3752 KB Output is correct
2 Correct 5 ms 3760 KB Output is correct
3 Correct 8 ms 4200 KB Output is correct
4 Correct 6 ms 3880 KB Output is correct
5 Correct 6 ms 4052 KB Output is correct
6 Correct 6 ms 4288 KB Output is correct
7 Correct 8 ms 4224 KB Output is correct
8 Correct 8 ms 4380 KB Output is correct
9 Correct 8 ms 3424 KB Output is correct
10 Correct 8 ms 3752 KB Output is correct
11 Correct 9 ms 3768 KB Output is correct
12 Correct 8 ms 4184 KB Output is correct
13 Correct 11 ms 4060 KB Output is correct
14 Incorrect 2 ms 472 KB Incorrect
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 3752 KB Output is correct
2 Correct 5 ms 3760 KB Output is correct
3 Correct 8 ms 4200 KB Output is correct
4 Correct 6 ms 3880 KB Output is correct
5 Correct 6 ms 4052 KB Output is correct
6 Correct 6 ms 4288 KB Output is correct
7 Correct 8 ms 4224 KB Output is correct
8 Correct 8 ms 4380 KB Output is correct
9 Correct 8 ms 3424 KB Output is correct
10 Correct 8 ms 3752 KB Output is correct
11 Correct 9 ms 3768 KB Output is correct
12 Correct 8 ms 4184 KB Output is correct
13 Correct 11 ms 4060 KB Output is correct
14 Incorrect 2 ms 472 KB Incorrect
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 3752 KB Output is correct
2 Correct 5 ms 3760 KB Output is correct
3 Correct 8 ms 4200 KB Output is correct
4 Correct 6 ms 3880 KB Output is correct
5 Correct 6 ms 4052 KB Output is correct
6 Correct 6 ms 4288 KB Output is correct
7 Correct 8 ms 4224 KB Output is correct
8 Correct 8 ms 4380 KB Output is correct
9 Correct 8 ms 3424 KB Output is correct
10 Correct 8 ms 3752 KB Output is correct
11 Correct 9 ms 3768 KB Output is correct
12 Correct 8 ms 4184 KB Output is correct
13 Correct 11 ms 4060 KB Output is correct
14 Incorrect 2 ms 472 KB Incorrect
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 3752 KB Output is correct
2 Correct 5 ms 3760 KB Output is correct
3 Correct 8 ms 4200 KB Output is correct
4 Correct 6 ms 3880 KB Output is correct
5 Correct 6 ms 4052 KB Output is correct
6 Correct 6 ms 4288 KB Output is correct
7 Correct 8 ms 4224 KB Output is correct
8 Correct 8 ms 4380 KB Output is correct
9 Correct 8 ms 3424 KB Output is correct
10 Correct 8 ms 3752 KB Output is correct
11 Correct 9 ms 3768 KB Output is correct
12 Correct 8 ms 4184 KB Output is correct
13 Correct 11 ms 4060 KB Output is correct
14 Incorrect 2 ms 472 KB Incorrect
15 Halted 0 ms 0 KB -