답안 #1077077

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1077077 2024-08-26T22:25:12 Z Trent 참나무 (IOI23_beechtree) C++17
0 / 100
1 ms 348 KB
#include "beechtree.h"
#include "bits/stdc++.h"
using namespace std;
#define forR(i, x) for(int i = 0; i < (x); ++i)
#define REP(i, a, b) for(int i = (a); i < (b); ++i)
#define all(x) x.begin(), x.end()
#define asst(x) if(!(x)) exit(2)
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<vi> vvi;
typedef vector<vll> vvll;

vi sub(int T, vi& P) {
    set<int> in;
    in.insert(T);
    int N = P.size();
    while(true) {
        bool hasNew = false;
        forR(i, N) {
            if(in.count(P[i]) && !in.count(i)) {
                hasNew = true;
                in.insert(i);
            }
        }
        if(!hasNew) break;
    }
    vi ret;
    for(int i : in) ret.push_back(i);
    return ret;
}

std::vector<int> beechtree(int N, int M, std::vector<int> P, std::vector<int> C)
{
    vi ret(N);
    if(N <= 8) {
        forR(r, N) {
            vi v = sub(r, P);
            sort(all(v));
            bool found = false;
            do {
                bool can = v[0] == r;
                map<int, int> freq;
                REP(i, 1, v.size()) {
                    P[v[i]] = v[freq[C[v[i]]]];
                    freq[C[v[i]]] += 1;
                }
                found = found || can;
            } while(next_permutation(all(v)));
            ret[r] = found ? 1 : 0;
        }
        return ret;
    }

    bool can = true;
    int lasCol = -1;
    for(int i = N-1; i >= 0; --i) {
        if(can) {
            ret[i] = 1;
            if(lasCol == -1) lasCol = C[i];
            else can = can && C[i] == lasCol;
        } else {
            ret[i] = 0;
        }
    }
    return ret;
}

Compilation message

beechtree.cpp: In function 'std::vector<int> beechtree(int, int, std::vector<int>, std::vector<int>)':
beechtree.cpp:5:41: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    5 | #define REP(i, a, b) for(int i = (a); i < (b); ++i)
      |                                         ^
beechtree.cpp:44:17: note: in expansion of macro 'REP'
   44 |                 REP(i, 1, v.size()) {
      |                 ^~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 348 KB 2nd lines differ - on the 1st token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 0 ms 348 KB 2nd lines differ - on the 1st token, expected: '0', found: '1'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 0 ms 348 KB 2nd lines differ - on the 1st token, expected: '0', found: '1'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 348 KB 2nd lines differ - on the 2nd token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 0 ms 348 KB 2nd lines differ - on the 1st token, expected: '0', found: '1'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 348 KB 2nd lines differ - on the 1st token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 0 ms 348 KB 2nd lines differ - on the 1st token, expected: '0', found: '1'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 348 KB 2nd lines differ - on the 1st token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 0 ms 348 KB 2nd lines differ - on the 1st token, expected: '0', found: '1'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 348 KB 2nd lines differ - on the 1st token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -