Submission #1137957

#TimeUsernameProblemLanguageResultExecution timeMemory
1137957ConquerConquererpopa (BOI18_popa)C++20
37 / 100
80 ms428 KiB
#include <bits/stdc++.h>
#include "popa.h"
using namespace std;

/*
int num[1005];

bool query(int x, int y, int u, int v) {
    int P = num[x], Q = num[u];
    for (int i = x + 1; i <= y; i++)
        P = __gcd(P, num[i]);

    for (int i = u + 1; i <= v; i++)
        Q = __gcd(Q, num[i]);

    return (P == Q);
}*/

int a[1005], b[1005];

int backtrack(int L, int R) {
    if (L == R) {
        a[L] = b[L] = -1;
        return L;
    }

    if (L > R) return -1;

    for (int i = L; i <= R; i++) {
        if (query(i, i, L, R)) {
            a[i] = backtrack(L, i - 1);
            b[i] = backtrack(i + 1, R);
            return i;
        }
    }

    return -1;
}

int solve(int N, int* Left, int* Right) {
    int root = backtrack(0, N - 1);
    for (int i = 0; i < N; i++) {
        Left[i] = a[i];
        Right[i] = b[i];
    }

    return root;
}

/*
int main() {
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int n;
    cin >> n;

    for (int i = 0; i < n; i++)
        cin >> num[i];

    int A[n], B[n];
    int root = solve(n, A, B);

    cout << "Root " << root << '\n';
    for (int i = 0; i < n; i++)
        cout << A[i] << ' ';
    cout << '\n';

    for (int i = 0; i < n; i++)
        cout << B[i] << ' ';
    cout << '\n';

    return 0;
}
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...