Submission #535531

# Submission time Handle Problem Language Result Execution time Memory
535531 2022-03-10T12:57:06 Z __Variatto Park (BOI16_park) C++17
0 / 100
2500 ms 840 KB
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define ll long long
const int MAX=2e3+10;
int fau[MAX];
int Find(int a){
    if(fau[a]==a)
        return a;
    return fau[a]=Find(fau[a]);
}
void Union(int a, int b){
    fau[Find(a)]=fau[Find(b)];
}
int n, m, w, h;
ll x[MAX], y[MAX], r[MAX];
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    cin>>n>>m>>w>>h;
    for(int i=1; i<=n; i++){
        cin>>x[i]>>y[i]>>r[i];
    }
    while(m--){
        int pro, e;
        cin>>pro>>e;
        for(int i=1; i<=n+4; i++)
            fau[i]=i;
        for(int i=1; i<=n; i++){
            if(y[i]-r[i]<2*pro) Union(i, n+1);
            if(w-(x[i]+r[i])<2*pro) Union(i, n+2);
            if(h-(y[i]+r[i])<2*pro) Union(i, n+3);
            if(x[i]-r[i]<2*pro) Union(i, n+4);
        }
/*        for(int i=1; i<=n+4; i++)
            cout<<i<<" "<<Find(i)<<"\n";
*/        for(int i=1; i<=n; i++){
            for(int j=1; j<=n; j++){
                ll odl=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
                odl-=(r[i]+r[j]);
                if(odl<2*pro)
                    Union(i, j);
            }
        }
        if(e==1){
            cout<<1;
            if(Find(n+1)!=Find(n+4)&&Find(n+1)!=Find(n+2)&&Find(n+1)!=Find(n+3))
                cout<<2;
            if(Find(n+1)!=Find(n+4)&&Find(n+4)!=Find(n+2)&&Find(n+1)!=Find(n+3)&&Find(n+2)!=Find(n+3))
                cout<<3;
            if(Find(n+1)!=Find(n+4)&&Find(n+3)!=Find(n+4)&&Find(n+2)!=Find(n+4))
                cout<<4;
        }
        if(e==2){
            if(Find(n+1)!=Find(n+4)&&Find(n+1)!=Find(n+2)&&Find(n+1)!=Find(n+3))
                cout<<1;
            cout<<2;
            if(Find(n+1)!=Find(n+2)&&Find(n+3)!=Find(n+2)&&Find(n+2)!=Find(n+4))
                cout<<3;
            if(Find(n+1)!=Find(n+3)&&Find(n+4)!=Find(n+2)&&Find(n+1)!=Find(n+2)&&Find(n+4)!=Find(n+3))
                cout<<4;
        }
        if(e==3){
            if(Find(n+1)!=Find(n+4)&&Find(n+4)!=Find(n+2)&&Find(n+1)!=Find(n+3)&&Find(n+2)!=Find(n+3))
                cout<<1;
            if(Find(n+1)!=Find(n+2)&&Find(n+3)!=Find(n+2)&&Find(n+2)!=Find(n+4))
                cout<<2;
            cout<<3;
            if(Find(n+3)!=Find(n+4)&&Find(n+4)!=Find(n+1)&&Find(n+2)!=Find(n+4))
                cout<<4;
        }
        if(e==4){
            if(Find(n+1)!=Find(n+4)&&Find(n+3)!=Find(n+4)&&Find(n+2)!=Find(n+4))
                cout<<1;
            if(Find(n+1)!=Find(n+3)&&Find(n+4)!=Find(n+2)&&Find(n+1)!=Find(n+2)&&Find(n+4)!=Find(n+3))
                cout<<2;
            if(Find(n+3)!=Find(n+4)&&Find(n+4)!=Find(n+1)&&Find(n+2)!=Find(n+4))
                cout<<3;
            cout<<4;
        }
        cout<<"\n";

    }

}
# Verdict Execution time Memory Grader output
1 Correct 14 ms 340 KB Output is correct
2 Correct 24 ms 340 KB Output is correct
3 Correct 14 ms 340 KB Output is correct
4 Correct 15 ms 388 KB Output is correct
5 Correct 21 ms 340 KB Output is correct
6 Incorrect 15 ms 340 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2576 ms 840 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 14 ms 340 KB Output is correct
2 Correct 24 ms 340 KB Output is correct
3 Correct 14 ms 340 KB Output is correct
4 Correct 15 ms 388 KB Output is correct
5 Correct 21 ms 340 KB Output is correct
6 Incorrect 15 ms 340 KB Output isn't correct
7 Halted 0 ms 0 KB -