답안 #468374

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
468374 2021-08-27T21:37:23 Z kessido 기지국 (IOI20_stations) C++17
0 / 100
957 ms 784 KB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long int
#define vll vector<ll>
#define vi vector<int>
#define vvi vector<vi>
#define pi pair<int, int>
#define pll pair<ll, ll>
#define all(x) (x).begin(), (x).end()
#define fori(i,n) for(int i = 0; i < int(n); ++i)

vi label(int n, int k, vi u, vi v) {
    vvi e(n);
    fori(i,n-1){
        e[u[i]].push_back(v[i]);
        e[v[i]].push_back(u[i]);
    }
    int cur_label = 0;
    vi res(n, -1);
    auto dfs = [&](auto& self, int i, int parent, int depth) -> void {
        if(depth) res[i] = cur_label++;
        for(int j : e[i]) {
            if(j==parent) continue;
            self(self, j, i, depth^1);
        }
        if(!depth) res[i] = cur_label++;
    };
    dfs(dfs, 0, -1, 1);
    assert(res[0] == 0);
    assert(cur_label==n);
    return res;
}

int find_next_station(int s, int t, vi c) {
    if(c.size() == 1) return c[0];
    if(s==t) return s;

    sort(all(c));

    int i = 0;
    if(s == 0) {
        // root
        while(i < c.size() && c[i] < t) i++;
    }else if (c.back() < s) {
        // case 1, s "end"
        if(t > s) return c.front();
        while(i + 1 < c.size() && c[i + 1] <= t) i++;
    } else {
        // case 2, s is "start"
        if(t < s) return c.back();
        while(i < c.size() && c[i] < t) i++;
    }
    assert(i < c.size());
    return c[i];

}

Compilation message

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:45:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |         while(i < c.size() && c[i] < t) i++;
      |               ~~^~~~~~~~~~
stations.cpp:49:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |         while(i + 1 < c.size() && c[i + 1] <= t) i++;
      |               ~~~~~~^~~~~~~~~~
stations.cpp:53:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |         while(i < c.size() && c[i] < t) i++;
      |               ~~^~~~~~~~~~
In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from stations.cpp:2:
stations.cpp:55:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |     assert(i < c.size());
      |            ~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 784 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 7 ms 724 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 784 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 957 ms 492 KB Output is correct
2 Correct 776 ms 400 KB Output is correct
3 Correct 604 ms 400 KB Output is correct
4 Correct 3 ms 468 KB Output is correct
5 Runtime error 2 ms 724 KB Execution killed with signal 6
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 736 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -