#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 solve(int N, int* Left, int* Right) {
stack<int> st;
int root = -1;
for (int i = 0; i < N; i++)
Left[i] = Right[i] = -1;
for (int i = 0; i < N; i++) {
while (st.size() && query(st.top(), i, i, i)) {
Right[st.top()] = -1;
Left[i] = st.top();
st.pop();
}
if (st.empty()) root = i;
else Right[st.top()] = i;
st.push(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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |