Submission #443082

# Submission time Handle Problem Language Result Execution time Memory
443082 2021-07-09T15:44:05 Z benedict0724 Fountain Parks (IOI21_parks) C++17
5 / 100
1159 ms 85284 KB
#include "parks.h"

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

map<pair<int, int>, int> M, M2;
vector<int> adj[200000];
bool counting[200000];

vector<pair<int, int>> E;

int link[200002], CC = 0;

int _find(int x)
{
    if(x == link[x]) return x;
    return link[x] = _find(link[x]);
}

void _unite(int x, int y)
{
    x = _find(x); y = _find(y);
    if(x != y) CC++;
    link[x] = y;
}

int cnt = 0;
void count_fountains(int x)
{
    cnt++;
    counting[x] = true;
    for(int i : adj[x])
    {
        if(counting[i]) continue;
        count_fountains(i);
        E.push_back({x, i});
    }
}

int construct_roads(vector<int> x, vector<int> y) {

    if (x.size() == 1) {
	build({}, {}, {}, {});
        return 1;
    }

    int n = x.size();
    vector<int> u, v, a, b;

    int MAX = 0;
    for(int i=0;i<n;i++) MAX = max(MAX, x[i]);

    for(int i=0;i<n;i++)
        M[{x[i], y[i]}] = i+1;

    for(int i=0;i<n;i++)
    {
        if(M[{x[i]+2, y[i]}]) adj[i].push_back(M[{x[i]+2, y[i]}]-1);
        if(M[{x[i]-2, y[i]}]) adj[i].push_back(M[{x[i]-2, y[i]}]-1);
        if(M[{x[i], y[i]+2}]) adj[i].push_back(M[{x[i], y[i]+2}]-1);
        if(M[{x[i], y[i]-2}]) adj[i].push_back(M[{x[i], y[i]-2}]-1);
    }

    count_fountains(0);

    if(cnt < n) return 0;

    for(int i=0;i<n;i++) link[i] = i;
    for(int i=0;i<n;i++)
    {
        for(int j : adj[i])
        {
            if(y[i] < y[j])
            {
                u.push_back(i);
                v.push_back(j);
                b.push_back(y[i] + 1);
                if(x[i] == 2 || (x[i] == 4 && y[i]%4 == 0))
                {
                    a.push_back(x[i] - 1);
                    M2[{x[i]-1,y[i]+1}] = 1;
                }
                else
                {
                a.push_back(x[i] + 1);
                    M2[{x[i]+1, y[i]+1}] = 1;
                }

                _unite(i, j);
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j : adj[i])
        {
            if(_find(i) == _find(j)) continue;
            if(x[i] > x[j]) swap(i, j);
            u.push_back(i);
            v.push_back(j);
            a.push_back(x[i] + 1);
            if(M2[{x[i] + 1, y[i] + 1}]) b.push_back(y[i] - 1);
            else b.push_back(y[i] + 1);

            _unite(i, j);
        }
    }

    if(CC < n-1) return 2;
    build(u, v, a, b);
    return 1;
}
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4940 KB Output is correct
2 Correct 3 ms 4940 KB Output is correct
3 Correct 3 ms 4940 KB Output is correct
4 Correct 3 ms 4940 KB Output is correct
5 Correct 3 ms 4940 KB Output is correct
6 Correct 4 ms 4940 KB Output is correct
7 Correct 3 ms 4940 KB Output is correct
8 Correct 3 ms 4940 KB Output is correct
9 Correct 442 ms 49432 KB Output is correct
10 Correct 24 ms 9548 KB Output is correct
11 Correct 132 ms 29080 KB Output is correct
12 Correct 34 ms 11748 KB Output is correct
13 Correct 84 ms 18068 KB Output is correct
14 Correct 4 ms 5196 KB Output is correct
15 Correct 6 ms 5452 KB Output is correct
16 Correct 439 ms 46148 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4940 KB Output is correct
2 Correct 3 ms 4940 KB Output is correct
3 Correct 3 ms 4940 KB Output is correct
4 Correct 3 ms 4940 KB Output is correct
5 Correct 3 ms 4940 KB Output is correct
6 Correct 4 ms 4940 KB Output is correct
7 Correct 3 ms 4940 KB Output is correct
8 Correct 3 ms 4940 KB Output is correct
9 Correct 442 ms 49432 KB Output is correct
10 Correct 24 ms 9548 KB Output is correct
11 Correct 132 ms 29080 KB Output is correct
12 Correct 34 ms 11748 KB Output is correct
13 Correct 84 ms 18068 KB Output is correct
14 Correct 4 ms 5196 KB Output is correct
15 Correct 6 ms 5452 KB Output is correct
16 Correct 439 ms 46148 KB Output is correct
17 Correct 3 ms 4940 KB Output is correct
18 Correct 3 ms 4940 KB Output is correct
19 Correct 3 ms 4940 KB Output is correct
20 Correct 3 ms 4940 KB Output is correct
21 Correct 3 ms 4940 KB Output is correct
22 Correct 3 ms 4940 KB Output is correct
23 Correct 1157 ms 80828 KB Output is correct
24 Correct 3 ms 4940 KB Output is correct
25 Correct 6 ms 5384 KB Output is correct
26 Correct 8 ms 5580 KB Output is correct
27 Correct 9 ms 5708 KB Output is correct
28 Correct 337 ms 35708 KB Output is correct
29 Correct 604 ms 49136 KB Output is correct
30 Correct 885 ms 66152 KB Output is correct
31 Correct 1159 ms 79244 KB Output is correct
32 Correct 3 ms 4940 KB Output is correct
33 Correct 3 ms 4940 KB Output is correct
34 Correct 4 ms 4940 KB Output is correct
35 Correct 3 ms 4940 KB Output is correct
36 Correct 4 ms 4940 KB Output is correct
37 Correct 3 ms 4940 KB Output is correct
38 Correct 3 ms 4952 KB Output is correct
39 Correct 3 ms 4940 KB Output is correct
40 Correct 3 ms 4940 KB Output is correct
41 Correct 3 ms 4940 KB Output is correct
42 Correct 3 ms 4940 KB Output is correct
43 Correct 6 ms 5452 KB Output is correct
44 Correct 7 ms 5580 KB Output is correct
45 Incorrect 546 ms 37620 KB Wrong answer detected in grader
46 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4940 KB Output is correct
2 Correct 3 ms 4940 KB Output is correct
3 Correct 3 ms 4940 KB Output is correct
4 Correct 3 ms 4940 KB Output is correct
5 Correct 3 ms 4940 KB Output is correct
6 Correct 4 ms 4940 KB Output is correct
7 Correct 3 ms 4940 KB Output is correct
8 Correct 3 ms 4940 KB Output is correct
9 Correct 442 ms 49432 KB Output is correct
10 Correct 24 ms 9548 KB Output is correct
11 Correct 132 ms 29080 KB Output is correct
12 Correct 34 ms 11748 KB Output is correct
13 Correct 84 ms 18068 KB Output is correct
14 Correct 4 ms 5196 KB Output is correct
15 Correct 6 ms 5452 KB Output is correct
16 Correct 439 ms 46148 KB Output is correct
17 Correct 3 ms 4940 KB Output is correct
18 Correct 3 ms 4940 KB Output is correct
19 Correct 3 ms 4940 KB Output is correct
20 Correct 3 ms 4940 KB Output is correct
21 Correct 3 ms 4940 KB Output is correct
22 Correct 3 ms 4940 KB Output is correct
23 Correct 1157 ms 80828 KB Output is correct
24 Correct 3 ms 4940 KB Output is correct
25 Correct 6 ms 5384 KB Output is correct
26 Correct 8 ms 5580 KB Output is correct
27 Correct 9 ms 5708 KB Output is correct
28 Correct 337 ms 35708 KB Output is correct
29 Correct 604 ms 49136 KB Output is correct
30 Correct 885 ms 66152 KB Output is correct
31 Correct 1159 ms 79244 KB Output is correct
32 Correct 3 ms 4940 KB Output is correct
33 Correct 3 ms 4940 KB Output is correct
34 Correct 4 ms 4940 KB Output is correct
35 Correct 3 ms 4940 KB Output is correct
36 Correct 4 ms 4940 KB Output is correct
37 Correct 3 ms 4940 KB Output is correct
38 Correct 3 ms 4952 KB Output is correct
39 Correct 3 ms 4940 KB Output is correct
40 Correct 3 ms 4940 KB Output is correct
41 Correct 3 ms 4940 KB Output is correct
42 Correct 3 ms 4940 KB Output is correct
43 Correct 6 ms 5452 KB Output is correct
44 Correct 7 ms 5580 KB Output is correct
45 Incorrect 546 ms 37620 KB Wrong answer detected in grader
46 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4940 KB Output is correct
2 Correct 3 ms 4940 KB Output is correct
3 Correct 3 ms 4940 KB Output is correct
4 Correct 3 ms 4940 KB Output is correct
5 Correct 3 ms 4940 KB Output is correct
6 Correct 4 ms 4940 KB Output is correct
7 Correct 3 ms 4940 KB Output is correct
8 Correct 3 ms 4940 KB Output is correct
9 Correct 442 ms 49432 KB Output is correct
10 Correct 24 ms 9548 KB Output is correct
11 Correct 132 ms 29080 KB Output is correct
12 Correct 34 ms 11748 KB Output is correct
13 Correct 84 ms 18068 KB Output is correct
14 Correct 4 ms 5196 KB Output is correct
15 Correct 6 ms 5452 KB Output is correct
16 Correct 439 ms 46148 KB Output is correct
17 Correct 3 ms 4940 KB Output is correct
18 Correct 3 ms 4940 KB Output is correct
19 Correct 4 ms 4940 KB Output is correct
20 Incorrect 891 ms 67888 KB Wrong answer detected in grader
21 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4940 KB Output is correct
2 Correct 3 ms 4940 KB Output is correct
3 Correct 3 ms 4940 KB Output is correct
4 Correct 3 ms 4940 KB Output is correct
5 Correct 3 ms 4940 KB Output is correct
6 Correct 4 ms 4940 KB Output is correct
7 Correct 3 ms 4940 KB Output is correct
8 Correct 3 ms 4940 KB Output is correct
9 Correct 442 ms 49432 KB Output is correct
10 Correct 24 ms 9548 KB Output is correct
11 Correct 132 ms 29080 KB Output is correct
12 Correct 34 ms 11748 KB Output is correct
13 Correct 84 ms 18068 KB Output is correct
14 Correct 4 ms 5196 KB Output is correct
15 Correct 6 ms 5452 KB Output is correct
16 Correct 439 ms 46148 KB Output is correct
17 Incorrect 1008 ms 85284 KB Wrong answer detected in grader
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4940 KB Output is correct
2 Correct 3 ms 4940 KB Output is correct
3 Correct 3 ms 4940 KB Output is correct
4 Correct 3 ms 4940 KB Output is correct
5 Correct 3 ms 4940 KB Output is correct
6 Correct 4 ms 4940 KB Output is correct
7 Correct 3 ms 4940 KB Output is correct
8 Correct 3 ms 4940 KB Output is correct
9 Correct 442 ms 49432 KB Output is correct
10 Correct 24 ms 9548 KB Output is correct
11 Correct 132 ms 29080 KB Output is correct
12 Correct 34 ms 11748 KB Output is correct
13 Correct 84 ms 18068 KB Output is correct
14 Correct 4 ms 5196 KB Output is correct
15 Correct 6 ms 5452 KB Output is correct
16 Correct 439 ms 46148 KB Output is correct
17 Correct 3 ms 4940 KB Output is correct
18 Correct 3 ms 4940 KB Output is correct
19 Correct 3 ms 4940 KB Output is correct
20 Correct 3 ms 4940 KB Output is correct
21 Correct 3 ms 4940 KB Output is correct
22 Correct 3 ms 4940 KB Output is correct
23 Correct 1157 ms 80828 KB Output is correct
24 Correct 3 ms 4940 KB Output is correct
25 Correct 6 ms 5384 KB Output is correct
26 Correct 8 ms 5580 KB Output is correct
27 Correct 9 ms 5708 KB Output is correct
28 Correct 337 ms 35708 KB Output is correct
29 Correct 604 ms 49136 KB Output is correct
30 Correct 885 ms 66152 KB Output is correct
31 Correct 1159 ms 79244 KB Output is correct
32 Correct 3 ms 4940 KB Output is correct
33 Correct 3 ms 4940 KB Output is correct
34 Correct 4 ms 4940 KB Output is correct
35 Correct 3 ms 4940 KB Output is correct
36 Correct 4 ms 4940 KB Output is correct
37 Correct 3 ms 4940 KB Output is correct
38 Correct 3 ms 4952 KB Output is correct
39 Correct 3 ms 4940 KB Output is correct
40 Correct 3 ms 4940 KB Output is correct
41 Correct 3 ms 4940 KB Output is correct
42 Correct 3 ms 4940 KB Output is correct
43 Correct 6 ms 5452 KB Output is correct
44 Correct 7 ms 5580 KB Output is correct
45 Incorrect 546 ms 37620 KB Wrong answer detected in grader
46 Halted 0 ms 0 KB -