답안 #52525

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
52525 2018-06-26T06:35:04 Z BrunoPloumhans Amusement Park (JOI17_amusement_park) C++14
10 / 100
43 ms 5992 KB
#include "Joi.h"

#include <bits/stdc++.h>
using namespace std;

#define int long long

static vector<vector<int>> adj;
static int tim;
static vector<int> ts;
static vector<int> path;

static void dfs(int u) {
  ts[u] = tim++;
  path.push_back(u);
  for(int v : adj[u]) {
    if(ts[v] == -1) {
      dfs(v);
      path.push_back(u);
    }
  }
}

static void find_tree(int n, int m, signed A[], signed B[]) {
  adj.assign(n, vector<int>());
  path.clear();
  tim = 0;
  for(int i = 0; i < m; ++i) {
    adj[A[i]].push_back(B[i]);
    adj[B[i]].push_back(A[i]);
  }
  ts.assign(n, -1);
  dfs(0);
}

void Joi(signed n, signed m, signed A[], signed B[], long long X, signed T) {
  int seq[60];
  //cout << "seq: { ";
  for(int i = 0; i < 60; ++i) {
    seq[i] = ((X&(1LL << i)) > 0);
    //cout << seq[i] << ", ";
  }
  //cout << "}" << endl;
  find_tree(n, m, A, B);
  for(int i = 0; i < n; ++i) {
    assert(ts[i] != -1);
    MessageBoard(i, seq[ts[i]%60]);
  }
}
#include "Ioi.h"

#include <bits/stdc++.h>
using namespace std;

#define int long long

static vector<vector<int>> adj;
static int tim;
static vector<int> ts;
static vector<int> path;

static void dfs(int u) {
  ts[u] = tim++;
  path.push_back(u);
  for(int v : adj[u]) {
    if(ts[v] == -1) {
      dfs(v);
      path.push_back(u);
    }
  }
}

static void find_tree(int n, int m, signed A[], signed B[]) {
  adj.assign(n, vector<int>());
  path.clear();
  tim = 0;
  for(int i = 0; i < m; ++i) {
    adj[A[i]].push_back(B[i]);
    adj[B[i]].push_back(A[i]);
  }
  ts.assign(n, -1);
  dfs(0);
}

long long Ioi(signed n, signed m, signed A[], signed B[], signed p, signed v, signed T) {
  find_tree(n, m, A, B);
  int seq[60];
  seq[ts[p]%60] = v;
  int i;
  for(i = 0; i < path.size()-1; ++i) {
    if(path[i] == p) {
      break;
    }
  }
  if(path[i] != p) while(true);
  if(path.front() != path.back()) while(true);
  for(int k = 0; k < 120; ++k) {
    int prev = i;
    i = (i+1)%path.size();
    if(i == path.size()-1) {
      i = 0;
    }
    if(find(adj[path[prev]].begin(), adj[path[prev]].end(), path[i]) == adj[path[prev]].end()) while(true);
    int res = Move(path[i]);
    seq[ts[path[i]]%60] = res;
  }
  int X = 0;
  for(int j = 0; j < 60; ++j)
    X |= seq[j] << j;
  return X;
}

Compilation message

Ioi.cpp: In function 'long long int Ioi(int, int, int*, int*, int, int, int)':
Ioi.cpp:41:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(i = 0; i < path.size()-1; ++i) {
              ~~^~~~~~~~~~~~~~~
Ioi.cpp:51:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(i == path.size()-1) {
        ~~^~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 860 KB Wrong Answer [7]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 38 ms 5380 KB Output is correct
2 Incorrect 33 ms 5652 KB Wrong Answer [7]
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 5784 KB Output is correct
2 Correct 4 ms 5784 KB Output is correct
3 Correct 4 ms 5784 KB Output is correct
4 Correct 6 ms 5784 KB Output is correct
5 Correct 6 ms 5784 KB Output is correct
6 Correct 7 ms 5784 KB Output is correct
7 Correct 6 ms 5784 KB Output is correct
8 Correct 8 ms 5784 KB Output is correct
9 Correct 18 ms 5784 KB Output is correct
10 Correct 19 ms 5784 KB Output is correct
11 Correct 18 ms 5784 KB Output is correct
12 Correct 4 ms 5784 KB Output is correct
13 Correct 4 ms 5784 KB Output is correct
14 Correct 5 ms 5784 KB Output is correct
15 Correct 4 ms 5784 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 37 ms 5888 KB Output is correct
2 Incorrect 36 ms 5992 KB Wrong Answer [7]
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 43 ms 5992 KB Output is correct
2 Correct 40 ms 5992 KB Output is correct
3 Incorrect 41 ms 5992 KB Wrong Answer [7]
4 Halted 0 ms 0 KB -