Submission #1050814

# Submission time Handle Problem Language Result Execution time Memory
1050814 2024-08-09T14:48:54 Z amine_aroua Fountain Parks (IOI21_parks) C++17
5 / 100
283 ms 50280 KB
#include "parks.h"
#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> adj;
vector<bool> vis;
const int MAX_X = 200000;
void dfs(int i)
{
    if(vis[i])
        return;
    vis[i] = 1;
    for(auto j : adj[i])
    {
        dfs(j);
    }
}
int mn , mx , cur_x;
void dfs_comp(int i , vector<int> &y)
{
    if(vis[i])
        return ;
    vis[i] = 1;
    mn = min(mn , y[i]);
    mx = max(mx , y[i]);
    for(auto j : adj[i])
    {
        dfs_comp(j , y);
    }
}
void add_edge(int u , int v)
{
    adj[u].push_back(v);
    adj[v].push_back(u);
}
int construct_roads(std::vector<int> x, std::vector<int> y) {
    int n= (int)x.size();
    adj.assign(n , {});
    vis.assign(n , 0);
    vector<int> u , v , a , b;
    map<pair<int, int> , int> idx;
    
    for(int i = 0 ; i <n ; i++)
    {
        idx[{x[i] , y[i]}] = i;
    }
    for(int i = 0 ; i < n ;i++)
    {
        if(idx.count({x[i] , y[i] + 2}))
        {
            u.push_back(i);
            v.push_back(idx[{x[i] , y[i] + 2}]);
            add_edge(u.back() , v.back());
            b.push_back(y[i] + 1);
            a.push_back(x[i] + 1);
        }
    }
    vector<vector<int>> comp(MAX_X + 1);
    for(int i = 0 ; i < n ;i++)
    {
        if(vis[i])
            continue;
        cur_x = x[i];
        mn = 1e9;
        mx = -1e9;
        dfs_comp(i , y);
        comp[cur_x].push_back(mn);
        comp[cur_x].push_back(mx);
    }
    for(int i = 2  ;i <= MAX_X ; i+=2)
    {
        sort(comp[i].begin() , comp[i].end());
    }
    for(int i = 4 ; i <= MAX_X ; i+=2)
    {
        assert(comp[i].size() % 2 == 0);
        for(int j = 0 ; j < (int)comp[i].size() ; j+=2)
        {
            if(j > 0)
            {
                assert(comp[i][j] != comp[i][j - 1]);
            }
            for(int val = comp[i][j] ; val <= comp[i][j + 1] ;val++)
            {
                if(idx.count({i - 2  ,val}))
                {
                    int k = (val == comp[i][j + 1]);
                    u.push_back(idx[{i,val}]);
                    v.push_back(idx[{i - 2 , val}]);
                    add_edge(u.back() , v.back());
                    a.push_back(i - 1);
                    b.push_back(val + 1 - 2 * k);
                }
            }
        }
    }
    vis.assign(n , 0);
    dfs(0);
    for(int i = 0 ; i < n ; i++)
    {
        if(!vis[i])
        {
            return 0;
        }
    }
    build(u , v , a , b);
    return 1;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 2 ms 4956 KB Output is correct
3 Correct 1 ms 4956 KB Output is correct
4 Correct 1 ms 4956 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 2 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 97 ms 25900 KB Output is correct
10 Correct 9 ms 7256 KB Output is correct
11 Correct 32 ms 16332 KB Output is correct
12 Correct 9 ms 8172 KB Output is correct
13 Correct 21 ms 12496 KB Output is correct
14 Correct 2 ms 5208 KB Output is correct
15 Correct 3 ms 5212 KB Output is correct
16 Correct 99 ms 24680 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 2 ms 4956 KB Output is correct
3 Correct 1 ms 4956 KB Output is correct
4 Correct 1 ms 4956 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 2 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 97 ms 25900 KB Output is correct
10 Correct 9 ms 7256 KB Output is correct
11 Correct 32 ms 16332 KB Output is correct
12 Correct 9 ms 8172 KB Output is correct
13 Correct 21 ms 12496 KB Output is correct
14 Correct 2 ms 5208 KB Output is correct
15 Correct 3 ms 5212 KB Output is correct
16 Correct 99 ms 24680 KB Output is correct
17 Incorrect 2 ms 4956 KB Tree @(3, 3) appears more than once: for edges on positions 1 and 2
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 2 ms 4956 KB Output is correct
3 Correct 1 ms 4956 KB Output is correct
4 Correct 1 ms 4956 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 2 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 97 ms 25900 KB Output is correct
10 Correct 9 ms 7256 KB Output is correct
11 Correct 32 ms 16332 KB Output is correct
12 Correct 9 ms 8172 KB Output is correct
13 Correct 21 ms 12496 KB Output is correct
14 Correct 2 ms 5208 KB Output is correct
15 Correct 3 ms 5212 KB Output is correct
16 Correct 99 ms 24680 KB Output is correct
17 Incorrect 2 ms 4956 KB Tree @(3, 3) appears more than once: for edges on positions 1 and 2
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 2 ms 4956 KB Output is correct
3 Correct 1 ms 4956 KB Output is correct
4 Correct 1 ms 4956 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 2 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 97 ms 25900 KB Output is correct
10 Correct 9 ms 7256 KB Output is correct
11 Correct 32 ms 16332 KB Output is correct
12 Correct 9 ms 8172 KB Output is correct
13 Correct 21 ms 12496 KB Output is correct
14 Correct 2 ms 5208 KB Output is correct
15 Correct 3 ms 5212 KB Output is correct
16 Correct 99 ms 24680 KB Output is correct
17 Correct 1 ms 4956 KB Output is correct
18 Correct 1 ms 4956 KB Output is correct
19 Correct 1 ms 4956 KB Output is correct
20 Correct 272 ms 50280 KB Output is correct
21 Incorrect 283 ms 47672 KB Tree @(99999, 100003) appears more than once: for edges on positions 88792 and 199993
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 2 ms 4956 KB Output is correct
3 Correct 1 ms 4956 KB Output is correct
4 Correct 1 ms 4956 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 2 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 97 ms 25900 KB Output is correct
10 Correct 9 ms 7256 KB Output is correct
11 Correct 32 ms 16332 KB Output is correct
12 Correct 9 ms 8172 KB Output is correct
13 Correct 21 ms 12496 KB Output is correct
14 Correct 2 ms 5208 KB Output is correct
15 Correct 3 ms 5212 KB Output is correct
16 Correct 99 ms 24680 KB Output is correct
17 Incorrect 269 ms 48808 KB Tree @(3, 100001) appears more than once: for edges on positions 72480 and 100001
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 2 ms 4956 KB Output is correct
3 Correct 1 ms 4956 KB Output is correct
4 Correct 1 ms 4956 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 2 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 97 ms 25900 KB Output is correct
10 Correct 9 ms 7256 KB Output is correct
11 Correct 32 ms 16332 KB Output is correct
12 Correct 9 ms 8172 KB Output is correct
13 Correct 21 ms 12496 KB Output is correct
14 Correct 2 ms 5208 KB Output is correct
15 Correct 3 ms 5212 KB Output is correct
16 Correct 99 ms 24680 KB Output is correct
17 Incorrect 2 ms 4956 KB Tree @(3, 3) appears more than once: for edges on positions 1 and 2
18 Halted 0 ms 0 KB -