Submission #598624

# Submission time Handle Problem Language Result Execution time Memory
598624 2022-07-18T15:25:29 Z definitelynotmee Fountain Parks (IOI21_parks) C++17
5 / 100
523 ms 28836 KB
#include "parks.h"
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define all(x) x.begin(), x.end()
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
template<typename t>
using matrix = vector<vector<t>>;


int construct_roads(std::vector<int> x, std::vector<int> y) {
    if (x.size() == 1) {
	build({}, {}, {}, {});
        return 1;
    }
    int n = x.size();
    std::vector<int> u, v, a, b;

    int dx[]{1,0,-1,0};
    int dy[]{0,1,0,-1};

    vector<int> pai(n);
    int comp = n;
    iota(all(pai),0);

    auto find =[&](int id, auto f){
        if(pai[id] == id)
            return id;
        return pai[id] = f(pai[id],f);
    };
    auto onion =[&](int a, int b){
        int pa = find(a,find);
        int pb = find(b,find);
        if(pa != pb){
            comp--;
            u.push_back(a);
            v.push_back(b);
        }
        pai[pa] = pb;
    };
    map<pii,int> fount;

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

    for(int i = 0; i < n; i++){
        for(int j = 0; j < 4; j++){
            int xi = x[i] + dx[j]*2, yi = y[i]+dy[j]*2;
            if(fount.count({xi,yi}))
                onion(i,fount[{xi,yi}]);
        }
    }
    if(comp > 1)
        return 0;

    set<pii> bench;

    for(int i = 0; i < n-1; i++){
        int cx = (x[u[i]]+x[v[i]])>>1, cy = (y[u[i]]+y[v[i]])>>1;
        bool ok = 0;
        for(int j = 0; j < 4; j++){
            int xi = cx + dx[j], yi = cy+dy[j];
            if(!((xi&1)&&(yi&1)))
                continue;
            if(!bench.count({xi,yi})){
                a.push_back(xi);
                b.push_back(yi);
                ok = 1;
                break;
            }
        }
        if(!ok)
            return 0;
    }
    build(u,v,a,b);

    return 1;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 216 KB Output is correct
4 Correct 1 ms 216 KB Output is correct
5 Correct 1 ms 216 KB Output is correct
6 Correct 1 ms 304 KB Output is correct
7 Correct 1 ms 304 KB Output is correct
8 Correct 1 ms 308 KB Output is correct
9 Correct 175 ms 14064 KB Output is correct
10 Correct 11 ms 1780 KB Output is correct
11 Correct 68 ms 7704 KB Output is correct
12 Correct 16 ms 2588 KB Output is correct
13 Correct 41 ms 4812 KB Output is correct
14 Correct 1 ms 344 KB Output is correct
15 Correct 2 ms 476 KB Output is correct
16 Correct 168 ms 14124 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 216 KB Output is correct
4 Correct 1 ms 216 KB Output is correct
5 Correct 1 ms 216 KB Output is correct
6 Correct 1 ms 304 KB Output is correct
7 Correct 1 ms 304 KB Output is correct
8 Correct 1 ms 308 KB Output is correct
9 Correct 175 ms 14064 KB Output is correct
10 Correct 11 ms 1780 KB Output is correct
11 Correct 68 ms 7704 KB Output is correct
12 Correct 16 ms 2588 KB Output is correct
13 Correct 41 ms 4812 KB Output is correct
14 Correct 1 ms 344 KB Output is correct
15 Correct 2 ms 476 KB Output is correct
16 Correct 168 ms 14124 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 304 KB Output is correct
19 Incorrect 1 ms 224 KB Tree @(3, 3) appears more than once: for edges on positions 3 and 4
20 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 216 KB Output is correct
4 Correct 1 ms 216 KB Output is correct
5 Correct 1 ms 216 KB Output is correct
6 Correct 1 ms 304 KB Output is correct
7 Correct 1 ms 304 KB Output is correct
8 Correct 1 ms 308 KB Output is correct
9 Correct 175 ms 14064 KB Output is correct
10 Correct 11 ms 1780 KB Output is correct
11 Correct 68 ms 7704 KB Output is correct
12 Correct 16 ms 2588 KB Output is correct
13 Correct 41 ms 4812 KB Output is correct
14 Correct 1 ms 344 KB Output is correct
15 Correct 2 ms 476 KB Output is correct
16 Correct 168 ms 14124 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 304 KB Output is correct
19 Incorrect 1 ms 224 KB Tree @(3, 3) appears more than once: for edges on positions 3 and 4
20 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 216 KB Output is correct
4 Correct 1 ms 216 KB Output is correct
5 Correct 1 ms 216 KB Output is correct
6 Correct 1 ms 304 KB Output is correct
7 Correct 1 ms 304 KB Output is correct
8 Correct 1 ms 308 KB Output is correct
9 Correct 175 ms 14064 KB Output is correct
10 Correct 11 ms 1780 KB Output is correct
11 Correct 68 ms 7704 KB Output is correct
12 Correct 16 ms 2588 KB Output is correct
13 Correct 41 ms 4812 KB Output is correct
14 Correct 1 ms 344 KB Output is correct
15 Correct 2 ms 476 KB Output is correct
16 Correct 168 ms 14124 KB Output is correct
17 Correct 1 ms 300 KB Output is correct
18 Correct 1 ms 220 KB Output is correct
19 Correct 1 ms 216 KB Output is correct
20 Incorrect 523 ms 28836 KB Tree @(192371, 7633) appears more than once: for edges on positions 2 and 3
21 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 216 KB Output is correct
4 Correct 1 ms 216 KB Output is correct
5 Correct 1 ms 216 KB Output is correct
6 Correct 1 ms 304 KB Output is correct
7 Correct 1 ms 304 KB Output is correct
8 Correct 1 ms 308 KB Output is correct
9 Correct 175 ms 14064 KB Output is correct
10 Correct 11 ms 1780 KB Output is correct
11 Correct 68 ms 7704 KB Output is correct
12 Correct 16 ms 2588 KB Output is correct
13 Correct 41 ms 4812 KB Output is correct
14 Correct 1 ms 344 KB Output is correct
15 Correct 2 ms 476 KB Output is correct
16 Correct 168 ms 14124 KB Output is correct
17 Incorrect 488 ms 28404 KB Tree @(3, 3) appears more than once: for edges on positions 41981 and 161741
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 216 KB Output is correct
4 Correct 1 ms 216 KB Output is correct
5 Correct 1 ms 216 KB Output is correct
6 Correct 1 ms 304 KB Output is correct
7 Correct 1 ms 304 KB Output is correct
8 Correct 1 ms 308 KB Output is correct
9 Correct 175 ms 14064 KB Output is correct
10 Correct 11 ms 1780 KB Output is correct
11 Correct 68 ms 7704 KB Output is correct
12 Correct 16 ms 2588 KB Output is correct
13 Correct 41 ms 4812 KB Output is correct
14 Correct 1 ms 344 KB Output is correct
15 Correct 2 ms 476 KB Output is correct
16 Correct 168 ms 14124 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 304 KB Output is correct
19 Incorrect 1 ms 224 KB Tree @(3, 3) appears more than once: for edges on positions 3 and 4
20 Halted 0 ms 0 KB -