Submission #598628

# Submission time Handle Problem Language Result Execution time Memory
598628 2022-07-18T15:30:52 Z definitelynotmee Fountain Parks (IOI21_parks) C++17
5 / 100
603 ms 37688 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;

    // mt19937 rng(time(nullptr));
    // vector<int>o(n);
    // iota(all(o));
    // shuffle(all(o),rng);

    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);
                bench.insert({xi,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 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 210 ms 17968 KB Output is correct
10 Correct 12 ms 2132 KB Output is correct
11 Correct 77 ms 9752 KB Output is correct
12 Correct 19 ms 3284 KB Output is correct
13 Correct 41 ms 4608 KB Output is correct
14 Correct 2 ms 340 KB Output is correct
15 Correct 2 ms 468 KB Output is correct
16 Correct 221 ms 17956 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 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 210 ms 17968 KB Output is correct
10 Correct 12 ms 2132 KB Output is correct
11 Correct 77 ms 9752 KB Output is correct
12 Correct 19 ms 3284 KB Output is correct
13 Correct 41 ms 4608 KB Output is correct
14 Correct 2 ms 340 KB Output is correct
15 Correct 2 ms 468 KB Output is correct
16 Correct 221 ms 17956 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 1 ms 212 KB Output is correct
20 Incorrect 1 ms 212 KB Solution announced impossible, but it is possible.
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 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 210 ms 17968 KB Output is correct
10 Correct 12 ms 2132 KB Output is correct
11 Correct 77 ms 9752 KB Output is correct
12 Correct 19 ms 3284 KB Output is correct
13 Correct 41 ms 4608 KB Output is correct
14 Correct 2 ms 340 KB Output is correct
15 Correct 2 ms 468 KB Output is correct
16 Correct 221 ms 17956 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 1 ms 212 KB Output is correct
20 Incorrect 1 ms 212 KB Solution announced impossible, but it is possible.
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 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 210 ms 17968 KB Output is correct
10 Correct 12 ms 2132 KB Output is correct
11 Correct 77 ms 9752 KB Output is correct
12 Correct 19 ms 3284 KB Output is correct
13 Correct 41 ms 4608 KB Output is correct
14 Correct 2 ms 340 KB Output is correct
15 Correct 2 ms 468 KB Output is correct
16 Correct 221 ms 17956 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 0 ms 212 KB Output is correct
20 Incorrect 446 ms 18496 KB Solution announced impossible, but it is possible.
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 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 210 ms 17968 KB Output is correct
10 Correct 12 ms 2132 KB Output is correct
11 Correct 77 ms 9752 KB Output is correct
12 Correct 19 ms 3284 KB Output is correct
13 Correct 41 ms 4608 KB Output is correct
14 Correct 2 ms 340 KB Output is correct
15 Correct 2 ms 468 KB Output is correct
16 Correct 221 ms 17956 KB Output is correct
17 Correct 603 ms 35736 KB Output is correct
18 Correct 596 ms 37688 KB Output is correct
19 Incorrect 461 ms 21036 KB Solution announced impossible, but it is possible.
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 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 210 ms 17968 KB Output is correct
10 Correct 12 ms 2132 KB Output is correct
11 Correct 77 ms 9752 KB Output is correct
12 Correct 19 ms 3284 KB Output is correct
13 Correct 41 ms 4608 KB Output is correct
14 Correct 2 ms 340 KB Output is correct
15 Correct 2 ms 468 KB Output is correct
16 Correct 221 ms 17956 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 1 ms 212 KB Output is correct
20 Incorrect 1 ms 212 KB Solution announced impossible, but it is possible.
21 Halted 0 ms 0 KB -