답안 #1053287

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1053287 2024-08-11T10:16:49 Z aykhn 분수 공원 (IOI21_parks) C++17
5 / 100
620 ms 63652 KB
#include "parks.h"
#include <bits/stdc++.h>

using namespace std;

int A[4] = {0, 0, 2, -2};
int B[4] = {2, -2, 0, 0};
array<int, 2> ben[4][2] = {{{-1, 1}, {1, 1}}, {{-1, -1}, {1, -1}}, {{1, 1}, {1, -1}}, {{-1, 1}, {-1, -1}}};

struct DSU
{
    vector<int> e;
    void init(int n)
    {
        e.assign(n, -1);
    }
    int get(int x)
    {
        if (e[x] < 0) return x;
        return e[x] = get(e[x]);
    }
    int unite(int x, int y)
    {
        x = get(x), y = get(y);
        if (x == y) return 0;
        if (e[x] > e[y]) swap(x, y);
        e[x] += e[y];
        e[y] = x;
        return 1;
    }
};

int construct_roads(vector<int> X, vector<int> Y) 
{
    map<array<int, 2>, int> mp, us;
    for (int i = 0; i < X.size(); i++) mp[{X[i], Y[i]}] = i + 1;
    vector<int> u, v, a, b;
    DSU dsu;
    dsu.init(X.size());
    for (int i = 0; i < X.size(); i++)
    {
        int x = X[i], y = Y[i];
        for (int k = 0; k < 4; k++)
        {
            int x1 = x + A[k], y1 = y + B[k];
            if (!mp[{x1, y1}] || dsu.unite(i, mp[{x1, y1}] - 1)) continue;
            u.push_back(i), v.push_back(mp[{x1, y1}] - 1);
            for (array<int, 2> &j : ben[k])
            {
                int a1 = x + j[0], b1 = y + j[1];
                if (!us[{a1, b1}])
                {
                    a.push_back(a1);
                    b.push_back(b1);
                    us[{a1, b1}] = 1;
                    break;
                }
            }
            // assert(a.size() == u.size());
        }
    }
    for (int i = 0; i < X.size(); i++)
    {
        if (dsu.get(i) != dsu.get(0)) return 0;
    }
    build(u, v, a, b);
    return 1;
}

Compilation message

parks.cpp: In function 'int construct_roads(std::vector<int>, std::vector<int>)':
parks.cpp:36:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for (int i = 0; i < X.size(); i++) mp[{X[i], Y[i]}] = i + 1;
      |                     ~~^~~~~~~~~~
parks.cpp:40:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |     for (int i = 0; i < X.size(); i++)
      |                     ~~^~~~~~~~~~
parks.cpp:62:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |     for (int i = 0; i < X.size(); i++)
      |                     ~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 240 ms 32036 KB Output is correct
10 Correct 10 ms 3676 KB Output is correct
11 Correct 69 ms 17384 KB Output is correct
12 Correct 16 ms 5468 KB Output is correct
13 Correct 49 ms 13016 KB Output is correct
14 Correct 1 ms 856 KB Output is correct
15 Correct 2 ms 956 KB Output is correct
16 Correct 233 ms 32016 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 240 ms 32036 KB Output is correct
10 Correct 10 ms 3676 KB Output is correct
11 Correct 69 ms 17384 KB Output is correct
12 Correct 16 ms 5468 KB Output is correct
13 Correct 49 ms 13016 KB Output is correct
14 Correct 1 ms 856 KB Output is correct
15 Correct 2 ms 956 KB Output is correct
16 Correct 233 ms 32016 KB Output is correct
17 Incorrect 0 ms 344 KB Wrong answer detected in grader
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 240 ms 32036 KB Output is correct
10 Correct 10 ms 3676 KB Output is correct
11 Correct 69 ms 17384 KB Output is correct
12 Correct 16 ms 5468 KB Output is correct
13 Correct 49 ms 13016 KB Output is correct
14 Correct 1 ms 856 KB Output is correct
15 Correct 2 ms 956 KB Output is correct
16 Correct 233 ms 32016 KB Output is correct
17 Incorrect 0 ms 344 KB Wrong answer detected in grader
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 240 ms 32036 KB Output is correct
10 Correct 10 ms 3676 KB Output is correct
11 Correct 69 ms 17384 KB Output is correct
12 Correct 16 ms 5468 KB Output is correct
13 Correct 49 ms 13016 KB Output is correct
14 Correct 1 ms 856 KB Output is correct
15 Correct 2 ms 956 KB Output is correct
16 Correct 233 ms 32016 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 543 ms 51252 KB Output is correct
21 Incorrect 445 ms 45996 KB Wrong answer detected in grader
22 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 240 ms 32036 KB Output is correct
10 Correct 10 ms 3676 KB Output is correct
11 Correct 69 ms 17384 KB Output is correct
12 Correct 16 ms 5468 KB Output is correct
13 Correct 49 ms 13016 KB Output is correct
14 Correct 1 ms 856 KB Output is correct
15 Correct 2 ms 956 KB Output is correct
16 Correct 233 ms 32016 KB Output is correct
17 Incorrect 620 ms 63652 KB Edge between 199926 and 199883 appears more than once: appeared on positions 199767 and 199854
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 240 ms 32036 KB Output is correct
10 Correct 10 ms 3676 KB Output is correct
11 Correct 69 ms 17384 KB Output is correct
12 Correct 16 ms 5468 KB Output is correct
13 Correct 49 ms 13016 KB Output is correct
14 Correct 1 ms 856 KB Output is correct
15 Correct 2 ms 956 KB Output is correct
16 Correct 233 ms 32016 KB Output is correct
17 Incorrect 0 ms 344 KB Wrong answer detected in grader
18 Halted 0 ms 0 KB -