제출 #762750

#제출 시각아이디문제언어결과실행 시간메모리
762750vjudge1Fun Tour (APIO20_fun)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#include "fun.h"
using namespace std;

typedef pair<int,int> pii;
typedef vector<int> vi;

#define pb push_back
#define ff first
#define ss second
#define all(x) (x).begin(),(x).end()

const int nax = 1e5 + 4;
int par[nax];
vi adj[nax];
int d[nax];
vi cord[nax];

void dfs(int x)
{
    d[x] = d[par[x]] + 1;
    cord[d[x]].pb(x);

    for(auto e: adj[x])
    {
        dfs(e);
    }
}
int dist(int x, int y)
{
    if(d[x] < d[y])
        swap(x, y);
    int  rep = 0;
    while(d[x] != d[y])
    {
        x = par[x];
        rep++;
    }
    while(x != y)
    {
        x = par[x];
        y = par[y];
        rep += 2;
    }
    return rep ;
}
vi createFunTour(int N, int Q)
{
    for(int i= N -1; i > 0; i--)
    {
        par[i] = (i - 1)/2;
        adj[par[i]].pb(i);
    }
    d[0] = -1;
    dfs(0);
    int last = log2(N);
    vi seq;
    for(int layer  = last; layer >= 0; layer--)
    {
        int i = 0, j = (int)(cord[layer].size()) - 1;
        bool ok = 1;
        if(!seq.empty() && dist(seq.back(),cord[layer][0]) != d[seq.back()] + d[cord[layer][0]])
        {
            ok = 0;
        }
        while(i <= j)
        {
            if(i == j)
            {
                seq.pb(cord[layer][i]);
                break;
            }
            else
            {
                if(ok)
                {
                    seq.pb(cord[layer][i]);
                    seq.pb(cord[layer][j]);
                    i++; j--;
                }
                else
                {
                    seq.pb(cord[layer][j]);
                    seq.pb(cord[layer][i]);
                    i++; j--;
                }
            }
        }
    }
    return seq;
}
#include <bits/stdc++.h>
#include "fun.h"
using namespace std;

typedef pair<int,int> pii;
typedef vector<int> vi;

#define pb push_back
#define ff first
#define ss second
#define all(x) (x).begin(),(x).end()

const int nax = 1e5 + 4;
int par[nax];
vi adj[nax];
int d[nax];
vi cord[nax];

void dfs(int x)
{
    d[x] = d[par[x]] + 1;
    cord[d[x]].pb(x);

    for(auto e: adj[x])
    {
        dfs(e);
    }
}
int dist(int x, int y)
{
    if(d[x] < d[y])
        swap(x, y);
    int  rep = 0;
    while(d[x] != d[y])
    {
        x = par[x];
        rep++;
    }
    while(x != y)
    {
        x = par[x];
        y = par[y];
        rep += 2;
    }
    return rep ;
}
vi createFunTour(int N, int Q)
{
    for(int i= N -1; i > 0; i--)
    {
        par[i] = (i - 1)/2;
        adj[par[i]].pb(i);
    }
    d[0] = -1;
    dfs(0);
    int last = log2(N);
    vi seq;
    for(int layer  = last; layer >= 0; layer--)
    {
        int i = 0, j = (int)(cord[layer].size()) - 1;
        bool ok = 1;
        if(!seq.empty() && dist(seq.back(),cord[layer][0]) != d[seq.back()] + d[cord[layer][0]])
        {
            ok = 0;
        }
        while(i <= j)
        {
            if(i == j)
            {
                seq.pb(cord[layer][i]);
                break;
            }
            else
            {
                if(ok)
                {
                    seq.pb(cord[layer][i]);
                    seq.pb(cord[layer][j]);
                    i++; j--;
                }
                else
                {
                    seq.pb(cord[layer][j]);
                    seq.pb(cord[layer][i]);
                    i++; j--;
                }
            }
        }
    }
    return seq;
}

컴파일 시 표준 에러 (stderr) 메시지

fun.cpp:104:11: error: redefinition of 'const int nax'
  104 | const int nax = 1e5 + 4;
      |           ^~~
fun.cpp:13:11: note: 'const int nax' previously defined here
   13 | const int nax = 1e5 + 4;
      |           ^~~
fun.cpp:105:5: error: redefinition of 'int par [100004]'
  105 | int par[nax];
      |     ^~~
fun.cpp:14:5: note: 'int par [100004]' previously declared here
   14 | int par[nax];
      |     ^~~
fun.cpp:106:4: error: redefinition of 'vi adj [100004]'
  106 | vi adj[nax];
      |    ^~~
fun.cpp:15:4: note: 'vi adj [100004]' previously declared here
   15 | vi adj[nax];
      |    ^~~
fun.cpp:107:5: error: redefinition of 'int d [100004]'
  107 | int d[nax];
      |     ^
fun.cpp:16:5: note: 'int d [100004]' previously declared here
   16 | int d[nax];
      |     ^
fun.cpp:108:4: error: redefinition of 'vi cord [100004]'
  108 | vi cord[nax];
      |    ^~~~
fun.cpp:17:4: note: 'vi cord [100004]' previously declared here
   17 | vi cord[nax];
      |    ^~~~
fun.cpp:110:6: error: redefinition of 'void dfs(int)'
  110 | void dfs(int x)
      |      ^~~
fun.cpp:19:6: note: 'void dfs(int)' previously defined here
   19 | void dfs(int x)
      |      ^~~
fun.cpp:120:5: error: redefinition of 'int dist(int, int)'
  120 | int dist(int x, int y)
      |     ^~~~
fun.cpp:29:5: note: 'int dist(int, int)' previously defined here
   29 | int dist(int x, int y)
      |     ^~~~
fun.cpp:138:4: error: redefinition of 'vi createFunTour(int, int)'
  138 | vi createFunTour(int N, int Q)
      |    ^~~~~~~~~~~~~
fun.cpp:47:4: note: 'std::vector<int> createFunTour(int, int)' previously defined here
   47 | vi createFunTour(int N, int Q)
      |    ^~~~~~~~~~~~~