답안 #432392

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
432392 2021-06-18T09:07:24 Z idk321 기지국 (IOI20_stations) C++17
73.3627 / 100
924 ms 916 KB
#include "stations.h"
#include <vector>

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

const int M = 1000000000;
const int N = 1000;
int in[N];
int out[N];
vector<int> adj[N];
vector<int> labels;

int n, k;

int timer;

int type[N];


void dfs2(int node, int par)
{
    if (par == -1)
    {
        type[node] = 0;

    } else
    {
        type[node] = !type[par];

    }


    in[node] = timer;
    timer++;

    for (int next : adj[node])
    {
        if (next == par) continue;
        dfs2(next, node);
    }

    out[node] = timer;
    timer++;
}


const int add = 2000;


std::vector<int> label(int n1, int k1, std::vector<int> u, std::vector<int> v) {
    n = n1;
    k = k1;

    labels.assign(n, 0);


    for (int i = 0; i < n; i++) adj[i].clear();
    for (int i = 0; i < u.size(); i++)
    {
        adj[u[i]].push_back(v[i]);
        adj[v[i]].push_back(u[i]);
    }




    timer = 0;
    dfs2(0, -1);



    for (int i = 0; i < n; i++) {
        if (type[i] == 0) labels[i] = in[i] + add;
        else labels[i] = out[i];
    }
    vector<int> numbers;
    for (int i : labels) numbers.push_back(i);
    sort(numbers.begin(), numbers.end());
    map<int, int> turnTo;
    int cur = 0;
    for (int i : numbers)
    {
        turnTo[i] = cur;
        cur++;
    }

    for (int i = 0; i < labels.size(); i++)
    {
        //labels[i] = turnTo[labels[i]];
    }

    return labels;
}



int find_next_station(int s, int t, std::vector<int> c) {
    if (t >= add) t -= add;
    if (s >= add)
    {
        s -= add;
        int par = -1;
        if (s != 0)
        {
            for (int next : c)
            {
                if (par < next)
                {
                    par = next;
                }
            }
        }


        if (t < s) return par;

        int take = M;
        for (int next : c)
        {
            if (next == par) continue;
            if (next < take && next >= t)
            {
                take = next;
            }

        }
        if (take == M) return par;
        return take;
    } else
    {
        int par = M;
        for (int& next : c)
        {

            next -= add;
            if (next < par) par = next;
        }


        if (t > s) return par + add;
        vector<int> children;
        for (int next : c)
        {
            if (next == par) continue;
            children.push_back(next);
        }


        if (t <= par) return par + add;

        int take = -1;
        for (int i = 0; i < children.size(); i++)
        {
            if (children[i] > t) break;
            take = i;
        }

        if (take == -1) return par + add;
        return children[take] + add;
    }






    return c[0];
}

Compilation message

stations.cpp: In function 'std::vector<int> label(int, int, std::vector<int>, std::vector<int>)':
stations.cpp:59:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |     for (int i = 0; i < u.size(); i++)
      |                     ~~^~~~~~~~~~
stations.cpp:88:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   88 |     for (int i = 0; i < labels.size(); i++)
      |                     ~~^~~~~~~~~~~~~~~
stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:153:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  153 |         for (int i = 0; i < children.size(); i++)
      |                         ~~^~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 472 KB Invalid labels (values out of range). scenario=0, k=1000, vertex=0, label=2000
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 432 KB Invalid labels (values out of range). scenario=0, k=1000, vertex=0, label=2000
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 572 ms 644 KB Output is correct
2 Correct 506 ms 644 KB Output is correct
3 Correct 864 ms 512 KB Output is correct
4 Correct 681 ms 528 KB Output is correct
5 Correct 609 ms 520 KB Output is correct
6 Correct 509 ms 764 KB Output is correct
7 Correct 457 ms 660 KB Output is correct
8 Correct 3 ms 596 KB Output is correct
9 Correct 5 ms 596 KB Output is correct
10 Correct 2 ms 468 KB Output is correct
11 Correct 612 ms 656 KB Output is correct
12 Correct 498 ms 772 KB Output is correct
13 Correct 501 ms 732 KB Output is correct
14 Correct 472 ms 656 KB Output is correct
15 Correct 54 ms 656 KB Output is correct
16 Correct 72 ms 656 KB Output is correct
17 Correct 116 ms 816 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 893 ms 648 KB Output is correct
2 Correct 667 ms 400 KB Output is correct
3 Correct 573 ms 540 KB Output is correct
4 Correct 3 ms 732 KB Output is correct
5 Correct 4 ms 596 KB Output is correct
6 Correct 2 ms 596 KB Output is correct
7 Correct 651 ms 512 KB Output is correct
8 Correct 924 ms 504 KB Output is correct
9 Correct 670 ms 656 KB Output is correct
10 Correct 604 ms 516 KB Output is correct
11 Correct 5 ms 596 KB Output is correct
12 Correct 5 ms 596 KB Output is correct
13 Correct 5 ms 596 KB Output is correct
14 Correct 6 ms 724 KB Output is correct
15 Correct 4 ms 720 KB Output is correct
16 Correct 529 ms 516 KB Output is correct
17 Correct 524 ms 640 KB Output is correct
18 Correct 516 ms 516 KB Output is correct
19 Correct 486 ms 512 KB Output is correct
20 Correct 507 ms 656 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 561 ms 768 KB Partially correct
2 Partially correct 473 ms 640 KB Partially correct
3 Partially correct 866 ms 400 KB Partially correct
4 Partially correct 672 ms 640 KB Partially correct
5 Partially correct 623 ms 508 KB Partially correct
6 Partially correct 488 ms 648 KB Partially correct
7 Partially correct 477 ms 656 KB Partially correct
8 Partially correct 2 ms 724 KB Partially correct
9 Partially correct 5 ms 596 KB Partially correct
10 Partially correct 2 ms 596 KB Partially correct
11 Partially correct 464 ms 644 KB Partially correct
12 Partially correct 532 ms 644 KB Partially correct
13 Partially correct 885 ms 516 KB Partially correct
14 Partially correct 687 ms 656 KB Partially correct
15 Partially correct 577 ms 644 KB Partially correct
16 Partially correct 461 ms 656 KB Partially correct
17 Partially correct 630 ms 516 KB Partially correct
18 Partially correct 452 ms 636 KB Partially correct
19 Partially correct 502 ms 756 KB Partially correct
20 Partially correct 449 ms 516 KB Partially correct
21 Partially correct 53 ms 528 KB Partially correct
22 Partially correct 82 ms 680 KB Partially correct
23 Partially correct 107 ms 784 KB Partially correct
24 Partially correct 6 ms 468 KB Partially correct
25 Partially correct 4 ms 468 KB Partially correct
26 Partially correct 5 ms 468 KB Partially correct
27 Partially correct 4 ms 468 KB Partially correct
28 Partially correct 2 ms 464 KB Partially correct
29 Partially correct 553 ms 528 KB Partially correct
30 Partially correct 545 ms 732 KB Partially correct
31 Partially correct 477 ms 528 KB Partially correct
32 Partially correct 483 ms 516 KB Partially correct
33 Partially correct 534 ms 520 KB Partially correct
34 Partially correct 358 ms 784 KB Partially correct
35 Partially correct 474 ms 908 KB Partially correct
36 Partially correct 451 ms 752 KB Partially correct
37 Partially correct 471 ms 916 KB Partially correct
38 Partially correct 466 ms 756 KB Partially correct
39 Partially correct 455 ms 764 KB Partially correct
40 Partially correct 470 ms 768 KB Partially correct
41 Partially correct 480 ms 772 KB Partially correct
42 Partially correct 64 ms 656 KB Partially correct
43 Partially correct 106 ms 780 KB Partially correct
44 Partially correct 129 ms 652 KB Partially correct
45 Partially correct 177 ms 900 KB Partially correct
46 Partially correct 337 ms 656 KB Partially correct
47 Partially correct 311 ms 780 KB Partially correct
48 Partially correct 59 ms 788 KB Partially correct
49 Partially correct 63 ms 804 KB Partially correct