답안 #1040751

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1040751 2024-08-01T08:55:22 Z 비요뜨(#11041) How to Avoid Disqualification in 75 Easy Steps (CEOI23_avoid) C++17
5 / 100
1 ms 600 KB
/*#include "avoid.h"
#include <bits/stdc++.h>
using namespace std;

int ind[10][10];
int save[10];
int p[20];

int find(int a) {
    return p[a]<0?a:p[a]=find(p[a]);
}

void merge(int a,int b) {
    a=find(a);
    b=find(b);
    if (a==b) {
        return;
    }
    p[b]=a;
}

std::pair<int, int> scout(int R, int H) {
    vector<int> v[75];
    for(int i=0;i<10;i++) {
        for(int j=1;j<=1000;j++) {
            if (j&(1<<i)) {
                v[i].push_back(j);
            }
            else {
                v[10+i].push_back(j);
            }
        }
    }
    int cnt=20;
    for(int i=0;i<10;i++) {
        for(int j=i+1;j<10;j++) {
            for(int k=1;k<=1000;k++) {
                if ((k&(1<<i))&&(k&(1<<j))) {
                    v[cnt].push_back(k);
                }
            }
            ind[i][j]=cnt++;
        }
    }
    for(int i=0;i<cnt;i++) {
        send(v[i]);
    }
memset(p,-1,sizeof(p));
    vector<int> got=wait();
    for(int i=0;i<10;i++) {
        if (got[i]==0&&got[10+i]==1) {
            save[i]=0;
        }
        else if (got[i]==1&&got[10+i]==0) {
            save[i]=1;
        }
        else {
            save[i]=-1;
        }
    }
    for(int i=0;i<10;i++) {
        for(int j=i+1;j<10;j++) {
            if (save[i]==-1&&save[j]==-1) {
                if (got[ind[i][j]]==1) {
                    merge(i,j);
                    merge(10+i,10+j);
                }
                else {
                    merge(i,10+j);
                    merge(10+i,j);
                }
            }
        }
    }
    int one=0;
    int two=0;
    int st=-1;
    for(int i=9;i>=0;i--) {
        if (save[i]==-1) {
            st=i;
        }
        else {
            one+=(save[i]<<i);
            two+=(save[i]<<i);
        }
    }
if (st!=-1)
    two+=(1<<st);
    for(int i=0;i<10;i++) {
        if (save[i]==-1&&i!=st) {
            if (find(i)==find(st)) {
                two+=(1<<i);
            }
            else {
                one+=(1<<i);
            }
        }
    }
    return pair<int,int>(one,two);
}*/
#include "avoid.h"
#include <bits/stdc++.h>
using namespace std;

int ind[10][10];
int save[10];
int p[20];

int find(int a) {
    return p[a]<0?a:p[a]=find(p[a]);
}

void merge(int a,int b) {
    a=find(a);
    b=find(b);
    if (a==b) {
        return;
    }
    p[b]=a;
}

typedef pair<int,int> P;

int solve1(int l,int r) {
    if (l==r){
        return l;
    }
    int mid=(l+r)/2;
    vector<int> v0;
    vector<int> v1;
    for(int i=l;i<=mid;i++) {
        v0.push_back(i);
    }
    send(v0);
    vector<int> got=wait();
    if (got[0]==1) {
        return solve1(l,mid);
    }
    else {
        return solve1(mid+1,r);
    }
}

P solve(int l,int r) {
    if (l==r){
        return P(l,l);
    }
    int mid=(l+r)/2;
    vector<int> v0;
    vector<int> v1;
    for(int i=l;i<=mid;i++) {
        v0.push_back(i);
    }
    for(int i=mid+1;i<=r;i++) {
        v1.push_back(i);
    }
    send(v0);
    send(v1);
    vector<int> got=wait();
    if (got[0]==1&&got[1]==1) {
        return P(solve1(l,mid),solve1(mid+1,r));
    }
    else if (got[0]==1) {
        return solve(l,mid);
    }
    else {
        return solve(mid+1,r);
    }
}


std::pair<int, int> scout(int R, int H) {
    return solve(1,1000);
}

# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct: 20 robot(s) used, 15 hour(s) passed
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Not correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 600 KB Correct: 20 robot(s) used, 14 hour(s) passed
2 Correct 1 ms 344 KB Correct: 20 robot(s) used, 18 hour(s) passed
3 Correct 1 ms 344 KB Correct: 20 robot(s) used, 15 hour(s) passed
4 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
5 Correct 1 ms 344 KB Correct: 20 robot(s) used, 17 hour(s) passed
6 Correct 1 ms 344 KB Correct: 20 robot(s) used, 17 hour(s) passed
7 Correct 1 ms 444 KB Correct: 20 robot(s) used, 11 hour(s) passed
8 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
9 Correct 0 ms 344 KB Correct: 20 robot(s) used, 18 hour(s) passed
10 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
11 Correct 1 ms 344 KB Correct: 20 robot(s) used, 16 hour(s) passed
12 Correct 1 ms 344 KB Correct: 20 robot(s) used, 18 hour(s) passed
13 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
14 Correct 1 ms 344 KB Correct: 20 robot(s) used, 18 hour(s) passed
15 Correct 0 ms 440 KB Correct: 20 robot(s) used, 14 hour(s) passed
16 Correct 1 ms 344 KB Correct: 20 robot(s) used, 18 hour(s) passed
17 Correct 1 ms 344 KB Correct: 20 robot(s) used, 10 hour(s) passed
18 Correct 0 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
19 Correct 1 ms 344 KB Correct: 20 robot(s) used, 17 hour(s) passed
20 Correct 0 ms 344 KB Correct: 20 robot(s) used, 18 hour(s) passed
21 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
22 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
23 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
24 Correct 1 ms 600 KB Correct: 20 robot(s) used, 12 hour(s) passed
25 Correct 0 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
26 Correct 1 ms 344 KB Correct: 20 robot(s) used, 18 hour(s) passed
27 Correct 1 ms 444 KB Correct: 20 robot(s) used, 17 hour(s) passed
28 Correct 0 ms 344 KB Correct: 20 robot(s) used, 15 hour(s) passed
29 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
30 Correct 1 ms 344 KB Correct: 20 robot(s) used, 15 hour(s) passed
31 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
32 Correct 0 ms 444 KB Correct: 20 robot(s) used, 16 hour(s) passed
33 Correct 0 ms 600 KB Correct: 20 robot(s) used, 13 hour(s) passed
34 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
35 Correct 1 ms 344 KB Correct: 20 robot(s) used, 18 hour(s) passed
36 Correct 1 ms 344 KB Correct: 20 robot(s) used, 15 hour(s) passed
37 Correct 1 ms 344 KB Correct: 20 robot(s) used, 12 hour(s) passed
38 Correct 0 ms 344 KB Correct: 19 robot(s) used, 18 hour(s) passed
39 Correct 0 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
40 Correct 1 ms 344 KB Correct: 20 robot(s) used, 16 hour(s) passed
41 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
42 Correct 0 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
43 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
44 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
45 Correct 0 ms 344 KB Correct: 20 robot(s) used, 10 hour(s) passed
46 Correct 0 ms 344 KB Correct: 19 robot(s) used, 18 hour(s) passed
47 Correct 0 ms 344 KB Correct: 19 robot(s) used, 18 hour(s) passed
48 Correct 0 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
49 Correct 1 ms 344 KB Correct: 20 robot(s) used, 11 hour(s) passed
50 Correct 0 ms 344 KB Correct: 20 robot(s) used, 10 hour(s) passed
51 Correct 1 ms 600 KB Correct: 18 robot(s) used, 9 hour(s) passed
52 Correct 1 ms 344 KB Correct: 20 robot(s) used, 10 hour(s) passed
53 Correct 0 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
54 Correct 1 ms 344 KB Correct: 20 robot(s) used, 19 hour(s) passed
55 Correct 0 ms 344 KB Correct: 20 robot(s) used, 10 hour(s) passed
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB Not correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB Not correct
2 Halted 0 ms 0 KB -