답안 #1012542

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1012542 2024-07-02T10:00:10 Z Rifal CEOI16_icc (CEOI16_icc) C++14
0 / 100
289 ms 852 KB
#include<bits/stdc++.h>
using namespace std;

// uncomment before submiting
 #include "icc.h"

// Comment or delete this before submitting
// ---------------------------------------------------------------
/*int grader_N;
int grader_Q_num ;
int grader_currEdge;
int grader_A[110], grader_B[110];
int grader_Adj[110][110];

int query(int size_a, int size_b, int a[], int b[]) {
    grader_Q_num++;

    for (int i = 0; i < size_a; i++) {
        for (int j = 0; j < size_b; j++) {
            if (a[i] == b[j]) {
                cout << "Query arrays are not disjoint:" << endl;
                for (int k = 0; k < size_a; k++) cout << a[k] << " ";
                cout << endl;
                for (int k = 0; k < size_b; k++) cout << b[k] << " ";
                cout << endl;
                exit(0);
            }
            if (grader_Adj[a[i]][b[j]] == 1) {
                return 1;
            }
        }
    }

    return 0;
}

void setRoad(int a, int b) {
    if ((a == grader_A[grader_currEdge] && b == grader_B[grader_currEdge])
        || (a == grader_B[grader_currEdge] && b == grader_A[grader_currEdge])) 
    {
        grader_currEdge++;
        
        int a1 = grader_A[grader_currEdge];
        int b1 = grader_B[grader_currEdge];
        grader_Adj[a1][b1] = 1;
        grader_Adj[b1][a1] = 1;

        if (grader_currEdge == grader_N) {
            cout << "OK " << "queries: " << grader_Q_num << endl;
            exit(0);
        }
    } else {
        cout << "Wrong answer for edge number " << grader_currEdge << endl;
        cout << "Correct edge: " << grader_A[grader_currEdge] << " " << grader_B[grader_currEdge] << ", ";
        cout << "Reported edge: " << a << " " << b << endl;
        exit(0);
    }
}

void run(int);

int main() {
    cin >> grader_N;

    for (int i = 1; i < grader_N; i++) {
        cin >> grader_A[i] >> grader_B[i];
    }

    grader_Q_num = 0;
    grader_currEdge = 1;
    grader_Adj[grader_A[1]][grader_B[1]] = 1;
    grader_Adj[grader_B[1]][grader_A[1]] = 1;

    run(grader_N);

    if (grader_currEdge < grader_N) {
        cout << "Not all edges found" << endl;
    }

    return 0;
}*/
// ---------------------------------------------------------------

// Implement
void run(int N) {
bool ok[N][N] = {};
while(true) {
    for(int i = 1; i <= N; i++) {
        bool check = true;
        int a[1], b[1];
        a[0] = i;
        for(int j = i+1; j <= N; j++) {
            if(ok[i][j] == 1) continue;
            b[0] = j;
            int cur =  query(1, 1, a, b);
            if(cur == 1) {
                setRoad(i,j);
                ok[i][j] = 1;
                ok[j][i] = 1;
                check = false;
                break;
            }
        }
        if(!check) break;
    }
}
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 113 ms 604 KB Number of queries more than 3000 out of 1500
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 215 ms 604 KB Number of queries more than 5000 out of 2500
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 229 ms 600 KB Number of queries more than 4500 out of 2250
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 203 ms 612 KB Number of queries more than 4000 out of 2000
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 204 ms 852 KB Number of queries more than 3550 out of 1775
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 289 ms 604 KB Number of queries more than 3250 out of 1625
2 Halted 0 ms 0 KB -