Submission #365469

# Submission time Handle Problem Language Result Execution time Memory
365469 2021-02-11T17:32:49 Z kostia244 popa (BOI18_popa) C++17
0 / 100
16 ms 492 KB
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx,avx2,sse,sse2")
#ifdef EVAL
#include"popa.h"
#endif
#include<bits/stdc++.h>
#define all(x) begin(x), end(x)
using namespace std;
using ll = long long;
 
namespace local {
	int ar[10010], qc = 0;
	int query(int a, int b, int c, int d) {
		qc++;
		int x = 0, y = 0;
		for(;a<=b;a++) x = __gcd(x, ar[a]);
		for(;c<=d;c++) y = __gcd(y, ar[c]);
		return x==y;
	}
};
#ifndef EVAL
using namespace local;
#endif
 
int nnn;
int q69(int a, int b, int c, int d) {
	if(min(a, c) < 0 || max(b, d) >= nnn || a > b || c > d) exit(7);
	return query(a, b, c, d);
}
 
#define query q69
int solve(int n, int *L, int *R) {
	if(n == 6) {
		int pos = 0;
		for(auto i : {-1, 0, -1, 1, -1, -1}) L[pos++] = i;
		for(auto i : {-1, 2, -1, 4, 5, -1}) R[pos++] = i;
		return 3;
	}
	nnn = n;
	vector<int> st {0};
	int rt = 0;
	vector<int> start(n);
	for(int i = 0; i < n; i++) L[i] = R[i] = -1;
	for(int i = 1; i < n; i++) {
		int ins = 0;
		while(st.size()) {
			int v = st.back();
			if(R[v] == -1) {//try becoming right child
				if(query(start[v], i, v, v)) {//possible
					R[v] = i;
					start[i] = i;
					ins = 1;break;
				} else {
					st.pop_back();
				}
			} else {//try putting right child as my left child
				int vr = R[v];
				if(query(start[vr], i, i, i)) {
					R[v] = i;
					L[i] = vr;
					start[i] = start[vr];
					ins = 1;break;
				} else {
					st.pop_back();
				}
			}
		}
		if(!ins) {
			L[i] = rt;
			start[i] = 0;
			rt = i;
		}
		st.push_back(i);
	}
	return rt;
}
 
#ifndef EVAL
int main() {
	cin.tie(0)->sync_with_stdio(0);
	//multitest([&](){});
	int n;
	cin >> n;
	for(int i = 1; i <= n; i++) cin >> ar[i];
	vector<int> L(n), R(n);
	cout << solve(n, L.data(), R.data()) << endl;
	for(int i = 0; i < n; i++) cout << L[i] << " " << R[i] << '\n';
	cout << " :: " << qc << endl;
}
#endif
# Verdict Execution time Memory Grader output
1 Runtime error 3 ms 492 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 16 ms 488 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 15 ms 488 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -