답안 #796512

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
796512 2023-07-28T13:01:19 Z Khizri 분수 공원 (IOI21_parks) C++17
5 / 100
382 ms 47180 KB
#include "parks.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define F first
#define S second
#define INF 1e18
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define pii pair<int,int>
#define pll pair<ll,ll>
#define OK cout<<"Ok"<<endl;
#define MOD (ll)(1e9+7)
const int mxn=2e5+5;
int n,x[mxn],y[mxn],p[mxn],sz[mxn];
int ax[4]={1,1,-1,-1};
int ay[4]={-1,1,1,-1};
vector<pair<pii,int>>vt;
map<pii,int>mp;
vector<int>adj[mxn];
int fnd(int u){
    if(p[u]==u) return u;
    return p[u]=fnd(p[u]);
}
void Union(int u,int v){
    u=fnd(u);
    v=fnd(v);
    if(u!=v){
        if(sz[u]>sz[v]) swap(u,v);
        sz[u]+=sz[v];
        p[v]=u;
    }
}
bool cmp(pair<pii,int> a,pair<pii,int> b){
    return a.F.S<b.F.S;
}
int construct_roads(vector<int> xx, vector<int> yy) {
    n=xx.size();
    if(n==1){
        build({},{},{},{});
        return 1;
    }
    for(int i=0;i<n;i++){
        vt.pb({{xx[i],yy[i]},i+1});
        mp[{xx[i],yy[i]}]=i+1;
        x[i+1]=xx[i];
        y[i+1]=yy[i];
    }
    set<pii>st;
    for(int i=1;i<=n;i++){
        p[i]=i;
        sz[i]=1;
    }
    vector<int>idxl,idxr,posl,posr;
    sort(all(vt));
    for(int i=1;i<n;i++){
        if(abs(vt[i].F.F-vt[i-1].F.F)+abs(vt[i].F.S-vt[i-1].F.S)==2){
            Union(vt[i-1].S,vt[i].S);
        }
    }
    sort(all(vt),cmp);
    for(int i=1;i<n;i++){
        if(abs(vt[i].F.F-vt[i-1].F.F)+abs(vt[i].F.S-vt[i-1].F.S)==2){
            Union(vt[i-1].S,vt[i].S);
        }
    }
    if(sz[fnd(1)]!=n) return 0;
    for(int i=1;i<=n;i++){
        int l=x[i],r=y[i];
        int node=mp[{l,r}];
        int a=l+2,b=r;
        int c=l,d=r+2;
        int color=((l+r)/2)%2;
        int idx=mp[{a,b}];
        int idx2=mp[{c,d}];
        if(idx){
            int pos1=(l+a)/2,pos2=(r+b)/2;
            if(color){
                pos2++;
            }
            else{
                pos2--;
            }
            idxl.pb(node-1);
            idxr.pb(idx-1);
            posl.pb(pos1);
            posr.pb(pos2);
        }
        if(idx2){
            int pos1=(l+c)/2,pos2=(r+d)/2;
            if(color){
                pos1++;
            }
            else{
                pos1--;
            }
            idxl.pb(node-1);
            idxr.pb(idx2-1);
            posl.pb(pos1);
            posr.pb(pos2);
        }
    }
    build(idxl,idxr,posl,posr);
    return 1;
}
/*
cd "c:\Users\User\Desktop\parks (4)\cpp\" ; if ($?) { g++ parks.cpp grader.cpp -o parks } ; if ($?) { .\a.exe }
5
4 4 
4 6 
6 4
4 2
2 4
*/
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 2 ms 4948 KB Output is correct
3 Correct 2 ms 5012 KB Output is correct
4 Correct 2 ms 4952 KB Output is correct
5 Correct 2 ms 4948 KB Output is correct
6 Correct 2 ms 4948 KB Output is correct
7 Correct 3 ms 4948 KB Output is correct
8 Correct 3 ms 4948 KB Output is correct
9 Correct 162 ms 29144 KB Output is correct
10 Correct 11 ms 7508 KB Output is correct
11 Correct 58 ms 18000 KB Output is correct
12 Correct 16 ms 8708 KB Output is correct
13 Correct 20 ms 10080 KB Output is correct
14 Correct 3 ms 5076 KB Output is correct
15 Correct 3 ms 5204 KB Output is correct
16 Correct 164 ms 29136 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 2 ms 4948 KB Output is correct
3 Correct 2 ms 5012 KB Output is correct
4 Correct 2 ms 4952 KB Output is correct
5 Correct 2 ms 4948 KB Output is correct
6 Correct 2 ms 4948 KB Output is correct
7 Correct 3 ms 4948 KB Output is correct
8 Correct 3 ms 4948 KB Output is correct
9 Correct 162 ms 29144 KB Output is correct
10 Correct 11 ms 7508 KB Output is correct
11 Correct 58 ms 18000 KB Output is correct
12 Correct 16 ms 8708 KB Output is correct
13 Correct 20 ms 10080 KB Output is correct
14 Correct 3 ms 5076 KB Output is correct
15 Correct 3 ms 5204 KB Output is correct
16 Correct 164 ms 29136 KB Output is correct
17 Correct 2 ms 4948 KB Output is correct
18 Incorrect 2 ms 4948 KB Tree @(3, 5) appears more than once: for edges on positions 0 and 1
19 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 2 ms 4948 KB Output is correct
3 Correct 2 ms 5012 KB Output is correct
4 Correct 2 ms 4952 KB Output is correct
5 Correct 2 ms 4948 KB Output is correct
6 Correct 2 ms 4948 KB Output is correct
7 Correct 3 ms 4948 KB Output is correct
8 Correct 3 ms 4948 KB Output is correct
9 Correct 162 ms 29144 KB Output is correct
10 Correct 11 ms 7508 KB Output is correct
11 Correct 58 ms 18000 KB Output is correct
12 Correct 16 ms 8708 KB Output is correct
13 Correct 20 ms 10080 KB Output is correct
14 Correct 3 ms 5076 KB Output is correct
15 Correct 3 ms 5204 KB Output is correct
16 Correct 164 ms 29136 KB Output is correct
17 Correct 2 ms 4948 KB Output is correct
18 Incorrect 2 ms 4948 KB Tree @(3, 5) appears more than once: for edges on positions 0 and 1
19 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 2 ms 4948 KB Output is correct
3 Correct 2 ms 5012 KB Output is correct
4 Correct 2 ms 4952 KB Output is correct
5 Correct 2 ms 4948 KB Output is correct
6 Correct 2 ms 4948 KB Output is correct
7 Correct 3 ms 4948 KB Output is correct
8 Correct 3 ms 4948 KB Output is correct
9 Correct 162 ms 29144 KB Output is correct
10 Correct 11 ms 7508 KB Output is correct
11 Correct 58 ms 18000 KB Output is correct
12 Correct 16 ms 8708 KB Output is correct
13 Correct 20 ms 10080 KB Output is correct
14 Correct 3 ms 5076 KB Output is correct
15 Correct 3 ms 5204 KB Output is correct
16 Correct 164 ms 29136 KB Output is correct
17 Correct 2 ms 4948 KB Output is correct
18 Correct 2 ms 4948 KB Output is correct
19 Correct 2 ms 4948 KB Output is correct
20 Incorrect 382 ms 47180 KB Tree @(192371, 7633) appears more than once: for edges on positions 0 and 1
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 2 ms 4948 KB Output is correct
3 Correct 2 ms 5012 KB Output is correct
4 Correct 2 ms 4952 KB Output is correct
5 Correct 2 ms 4948 KB Output is correct
6 Correct 2 ms 4948 KB Output is correct
7 Correct 3 ms 4948 KB Output is correct
8 Correct 3 ms 4948 KB Output is correct
9 Correct 162 ms 29144 KB Output is correct
10 Correct 11 ms 7508 KB Output is correct
11 Correct 58 ms 18000 KB Output is correct
12 Correct 16 ms 8708 KB Output is correct
13 Correct 20 ms 10080 KB Output is correct
14 Correct 3 ms 5076 KB Output is correct
15 Correct 3 ms 5204 KB Output is correct
16 Correct 164 ms 29136 KB Output is correct
17 Incorrect 161 ms 26720 KB Solution announced impossible, but it is possible.
18 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 2 ms 4948 KB Output is correct
3 Correct 2 ms 5012 KB Output is correct
4 Correct 2 ms 4952 KB Output is correct
5 Correct 2 ms 4948 KB Output is correct
6 Correct 2 ms 4948 KB Output is correct
7 Correct 3 ms 4948 KB Output is correct
8 Correct 3 ms 4948 KB Output is correct
9 Correct 162 ms 29144 KB Output is correct
10 Correct 11 ms 7508 KB Output is correct
11 Correct 58 ms 18000 KB Output is correct
12 Correct 16 ms 8708 KB Output is correct
13 Correct 20 ms 10080 KB Output is correct
14 Correct 3 ms 5076 KB Output is correct
15 Correct 3 ms 5204 KB Output is correct
16 Correct 164 ms 29136 KB Output is correct
17 Correct 2 ms 4948 KB Output is correct
18 Incorrect 2 ms 4948 KB Tree @(3, 5) appears more than once: for edges on positions 0 and 1
19 Halted 0 ms 0 KB -