Submission #3027558


Source Code Expand

#include <cstdio>
#include <vector>
#include <set>
#include <utility>
using namespace std;

vector<pair<int,int> > al[609][609];
vector<pair<int,int> > bl[609][609];
vector<pair<int,int> > da;
vector<pair<int,int> > db;
int A[609][609];
int B[609][609];
vector<pair<int,int> > V[2][2];

void dfsa(int x, int y, int v){
    A[x][y] = v;
    for (auto i = al[x][y].begin(); i != al[x][y].end(); i++){
        if (A[i->first][i->second]==0) dfsa(i->first,i->second,3-v);
    }
}

void dfsb(int x, int y, int v){
    B[x][y] = v;
    for (auto i = bl[x][y].begin(); i != bl[x][y].end(); i++){
        if (B[i->first][i->second]==0) dfsb(i->first,i->second,3-v);
    }
}

int main(){
    int N;
    scanf("%d", &N);
    int D1, D2;
    scanf("%d %d", &D1, &D2);
    {
        int j = 0;
        while (j*j<D1) j++;
        for (int i = 0; i*i<D1; i++){
            while (i*i+j*j>D1) j--;
            if (i*i+j*j==D1){
                da.push_back(make_pair(i,j));
                da.push_back(make_pair(-i,-j));
                da.push_back(make_pair(j,-i));
                da.push_back(make_pair(-j,i));
            }
        }
        j = 0;
        while (j*j<D2) j++;
        for (int i = 0; i*i<D2; i++){
            while (i*i+j*j>D2) j--;
            if (i*i+j*j==D2){
                db.push_back(make_pair(i,j));
                db.push_back(make_pair(-i,-j));
                db.push_back(make_pair(j,-i));
                db.push_back(make_pair(-j,i));
            }
        }
    }
    for (int i = 0; i < 2*N; i++){
        for (int j = 0; j < 2*N; j++){
            for (int k = 0; k < da.size(); k++){
                int x = i+da[k].first, y = j+da[k].second;
                if (x>=0&&x<2*N&&y>=0&&y<2*N){
                    al[i][j].push_back(make_pair(x,y));
                }
            }
            for (int k = 0; k < db.size(); k++){
                int x = i+db[k].first, y = j+db[k].second;
                if (x>=0&&x<2*N&&y>=0&&y<2*N){
                    bl[i][j].push_back(make_pair(x,y));
                }
            }
        }
    }
    for (int i = 0; i < 2*N; i++){
        for (int j = 0; j < 2*N; j++){
            if (A[i][j]==0) dfsa(i,j,1);
            if (B[i][j]==0) dfsb(i,j,1);
            V[A[i][j]-1][B[i][j]-1].push_back(make_pair(i,j));
        }
    }
    for (int i = 0; i < 2; i++){
        for (int j = 0; j < 2; j++){
            if (V[i][j].size()>=N*N){
                for (int k = 0; k < N*N; k++){
                    printf("%d %d\n", V[i][j][k].first, V[i][j][k].second);
                }
                return 0;
            }
        }
    }
}

Submission Info

Submission Time
Task D - Choosing Points
User gabrielgoh
Language C++14 (GCC 5.4.1)
Score 800
Code Size 2700 Byte
Status AC
Exec Time 460 ms
Memory 174588 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:31:20: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &N);
                    ^
./Main.cpp:33:29: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d", &D1, &D2);
                             ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 800 / 800
Status
AC × 2
AC × 46
Set Name Test Cases
Sample sample01.txt, sample02.txt
All sample01.txt, sample02.txt, extra00.txt, extra01.txt, extra02.txt, extra03.txt, extra04.txt, extra05.txt, extra06.txt, extra07.txt, extra08.txt, extra09.txt, extra10.txt, extra11.txt, extra12.txt, extra13.txt, extra14.txt, extra15.txt, extra16.txt, extra17.txt, extra18.txt, extra19.txt, extra20.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, sample01.txt, sample02.txt
Case Name Status Exec Time Memory
extra00.txt AC 204 ms 67116 KB
extra01.txt AC 199 ms 70148 KB
extra02.txt AC 261 ms 84188 KB
extra03.txt AC 263 ms 79584 KB
extra04.txt AC 293 ms 88796 KB
extra05.txt AC 157 ms 57624 KB
extra06.txt AC 248 ms 85188 KB
extra07.txt AC 263 ms 92060 KB
extra08.txt AC 423 ms 132316 KB
extra09.txt AC 157 ms 60604 KB
extra10.txt AC 302 ms 101212 KB
extra11.txt AC 169 ms 62288 KB
extra12.txt AC 184 ms 64984 KB
extra13.txt AC 142 ms 58472 KB
extra14.txt AC 182 ms 61100 KB
extra15.txt AC 188 ms 64092 KB
extra16.txt AC 266 ms 88200 KB
extra17.txt AC 152 ms 54104 KB
extra18.txt AC 158 ms 55576 KB
extra19.txt AC 184 ms 55920 KB
extra20.txt AC 138 ms 64988 KB
in01.txt AC 229 ms 75488 KB
in02.txt AC 425 ms 125472 KB
in03.txt AC 277 ms 87640 KB
in04.txt AC 306 ms 90836 KB
in05.txt AC 349 ms 103000 KB
in06.txt AC 331 ms 96232 KB
in07.txt AC 334 ms 88268 KB
in08.txt AC 254 ms 79880 KB
in09.txt AC 96 ms 43460 KB
in10.txt AC 233 ms 71204 KB
in11.txt AC 246 ms 69468 KB
in12.txt AC 342 ms 106724 KB
in13.txt AC 289 ms 93036 KB
in14.txt AC 371 ms 111992 KB
in15.txt AC 405 ms 127204 KB
in16.txt AC 270 ms 93452 KB
in17.txt AC 460 ms 174588 KB
in18.txt AC 339 ms 112372 KB
in19.txt AC 227 ms 80248 KB
in20.txt AC 225 ms 68992 KB
in21.txt AC 224 ms 69024 KB
sample01.txt AC 7 ms 18560 KB
sample02.txt AC 7 ms 18560 KB