답안 #1077600

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1077600 2024-08-27T08:15:37 Z danikoynov Amusement Park (JOI17_amusement_park) C++14
28 / 100
20 ms 5348 KB
#include "Joi.h"


#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

const int MAXN = 10010, MAXBIT = 60;
vector < int > adj[MAXN];
int used[MAXN], acord[MAXN];
vector < int > ord;

int last_bit;
void dfs(int v, ll X)
{
  used[v] = 1;
  acord[v] = last_bit;

  /**if (last_bit == 59)
  {
    cout << "info " << (X & ((ll)(1) << last_bit)) << " " << ((X & ((ll)(1) << last_bit)) > 0) << endl;
  }*/
  ///cout << "Vertex " << v << " " << last_bit << endl;
  MessageBoard(v, ((X & ((ll)(1) << last_bit)) > 0));  
  last_bit ++;
  if (last_bit == MAXBIT)
    last_bit = 0;
  ord.push_back(v);
  for (int u : adj[v])
  { 

    if (used[u])
      continue;
    dfs(u, X);
    ord.push_back(v);
  }
}

void build_tree(int N, int M, int A[], int B[], ll X)
{
  for (int i = 0; i < M; i ++)
  {
    adj[A[i]].push_back(B[i]);
    adj[B[i]].push_back(A[i]);
  }

  dfs(0, X);

  ord.pop_back();
}
void Joi(int N, int M, int A[], int B[], long long X, int T) {
  build_tree(N, M, A, B, X);
}
#include "Ioi.h"

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

const int MAXN = 10010, MAXBIT = 60;
vector < int > graph[MAXN];
int marked[MAXN], linked[MAXN];
vector < int > path;

int next_bit;
void dfs(int v)
{
  marked[v] = 1;
  linked[v] = next_bit ++;
  if (next_bit == MAXBIT)
    next_bit = 0;
  //MessageBoard(v, ((X & ((ll)(1) << bit)) > 0));
  path.push_back(v);
  for (int u : graph[v])
  { 
    if (marked[u])
      continue;
    dfs(u);
    path.push_back(v);
  }
}

void build_tree(int N, int M, int A[], int B[])
{
  for (int i = 0; i < M; i ++)
  {
    graph[A[i]].push_back(B[i]);
    graph[B[i]].push_back(A[i]);
  }

  dfs(0);

  path.pop_back();
}

int bit_val[MAXBIT], ch[MAXBIT];

long long Ioi(int N, int M, int A[], int B[], int P, int V, int T) 
{
  build_tree(N, M, A, B);

  
  int pos = 0;
  while(path[pos] != P)
    pos ++;

  vector < int > tk = path;
  for (int cur : tk)
    path.push_back(cur);

  /**for (int cur : path)
    cout << cur << " ";
  cout << endl;*/
  bit_val[linked[P]] = V;
  int ver = P;

  ll ds = 0;
  for (int step = 0; ds != ((ll)(1) << MAXBIT) - 1; step ++)
  {
    
    int nxt = (pos + 1) % (int)(path.size());
    //cout << "move from " << ver  << " " << path[nxt] << endl;
    bool fine = false;
    for (int j = 0; j < M; j ++)
    {
      if (A[j] == ver && B[j] == path[nxt])
        fine = true;
      if (A[j] == path[nxt] && B[j] == ver)
        fine = true;
    }
 
    ver = path[nxt];  
    int res = Move(ver);   
    ///assert(step != 119);
    //cout << "linked " << linked[ver] << " " << res << endl;
    bit_val[linked[ver]] = res;
    ch[linked[ver]] = 1;
    ds |= ((ll)(1) << linked[ver]);
    pos = nxt;
  }


  ll X = 0;
  for (int bit = 0; bit < MAXBIT; bit ++)
  {
    assert(ch[bit]);
    if (bit_val[bit] > 0)
      X |= ((ll)(1) << bit);
  }

  //cout << "X " << X << endl;
  return X;
}

Compilation message

Ioi.cpp: In function 'long long int Ioi(int, int, int*, int*, int, int, int)':
Ioi.cpp:71:10: warning: variable 'fine' set but not used [-Wunused-but-set-variable]
   71 |     bool fine = false;
      |          ^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1304 KB Output is correct
2 Correct 1 ms 1296 KB Output is correct
3 Correct 1 ms 1312 KB Output is correct
4 Correct 1 ms 1308 KB Output is correct
5 Correct 1 ms 1304 KB Output is correct
6 Correct 1 ms 1308 KB Output is correct
7 Correct 2 ms 1312 KB Output is correct
8 Correct 1 ms 1312 KB Output is correct
9 Correct 1 ms 1304 KB Output is correct
10 Correct 0 ms 1308 KB Output is correct
11 Correct 3 ms 1612 KB Output is correct
12 Correct 1 ms 1304 KB Output is correct
13 Correct 2 ms 1316 KB Output is correct
14 Correct 1 ms 1312 KB Output is correct
15 Correct 2 ms 1312 KB Output is correct
16 Correct 1 ms 1308 KB Output is correct
17 Correct 1 ms 1312 KB Output is correct
18 Correct 1 ms 1312 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 20 ms 4968 KB Output is correct
2 Correct 16 ms 5056 KB Output is correct
3 Correct 20 ms 5080 KB Output is correct
4 Correct 9 ms 3568 KB Output is correct
5 Correct 11 ms 4144 KB Output is correct
6 Correct 9 ms 3864 KB Output is correct
7 Correct 10 ms 3936 KB Output is correct
8 Correct 10 ms 4068 KB Output is correct
9 Correct 10 ms 4076 KB Output is correct
10 Correct 9 ms 3564 KB Output is correct
11 Correct 9 ms 3564 KB Output is correct
12 Correct 8 ms 3284 KB Output is correct
13 Correct 8 ms 3292 KB Output is correct
14 Correct 9 ms 3552 KB Output is correct
15 Correct 9 ms 3552 KB Output is correct
16 Correct 9 ms 3488 KB Output is correct
17 Correct 9 ms 3564 KB Output is correct
18 Correct 9 ms 3560 KB Output is correct
19 Correct 9 ms 3552 KB Output is correct
20 Correct 9 ms 4136 KB Output is correct
21 Correct 7 ms 4080 KB Output is correct
22 Correct 9 ms 3564 KB Output is correct
23 Correct 9 ms 4080 KB Output is correct
24 Correct 9 ms 3756 KB Output is correct
25 Correct 9 ms 4076 KB Output is correct
26 Correct 9 ms 4068 KB Output is correct
27 Correct 9 ms 4072 KB Output is correct
28 Correct 9 ms 4076 KB Output is correct
29 Correct 10 ms 3552 KB Output is correct
30 Correct 12 ms 3552 KB Output is correct
31 Correct 0 ms 1308 KB Output is correct
32 Correct 1 ms 1308 KB Output is correct
33 Correct 1 ms 1304 KB Output is correct
34 Correct 1 ms 1308 KB Output is correct
35 Correct 1 ms 1312 KB Output is correct
36 Correct 0 ms 1304 KB Output is correct
37 Correct 0 ms 1308 KB Output is correct
38 Correct 0 ms 1308 KB Output is correct
39 Correct 1 ms 1300 KB Output is correct
40 Correct 1 ms 1308 KB Output is correct
41 Correct 0 ms 1296 KB Output is correct
42 Correct 0 ms 1304 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 1308 KB Output is correct
2 Correct 1 ms 1308 KB Output is correct
3 Correct 1 ms 1288 KB Output is correct
4 Correct 3 ms 1848 KB Output is correct
5 Correct 2 ms 1712 KB Output is correct
6 Correct 3 ms 1836 KB Output is correct
7 Correct 2 ms 1840 KB Output is correct
8 Correct 2 ms 1840 KB Output is correct
9 Correct 7 ms 4580 KB Output is correct
10 Correct 9 ms 4584 KB Output is correct
11 Correct 7 ms 4584 KB Output is correct
12 Correct 2 ms 1304 KB Output is correct
13 Correct 0 ms 1308 KB Output is correct
14 Correct 1 ms 1296 KB Output is correct
15 Correct 0 ms 1304 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 4976 KB Output is correct
2 Partially correct 15 ms 4844 KB Partially correct
3 Partially correct 15 ms 4960 KB Partially correct
4 Correct 9 ms 3556 KB Output is correct
5 Partially correct 9 ms 4188 KB Partially correct
6 Correct 9 ms 4076 KB Output is correct
7 Correct 9 ms 4068 KB Output is correct
8 Correct 10 ms 3556 KB Output is correct
9 Correct 9 ms 3564 KB Output is correct
10 Correct 10 ms 3552 KB Output is correct
11 Correct 8 ms 3504 KB Output is correct
12 Correct 9 ms 3288 KB Output is correct
13 Correct 9 ms 3288 KB Output is correct
14 Correct 9 ms 3560 KB Output is correct
15 Correct 10 ms 3568 KB Output is correct
16 Correct 9 ms 3564 KB Output is correct
17 Correct 11 ms 3472 KB Output is correct
18 Correct 9 ms 3568 KB Output is correct
19 Partially correct 9 ms 3564 KB Partially correct
20 Incorrect 7 ms 4076 KB Output isn't correct
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 4968 KB Output is correct
2 Correct 16 ms 5348 KB Output is correct
3 Incorrect 16 ms 5144 KB Output isn't correct
4 Halted 0 ms 0 KB -