답안 #365393

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
365393 2021-02-11T15:15:55 Z kostia244 popa (BOI18_popa) C++17
컴파일 오류
0 ms 0 KB
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx,avx2,sse,sse2")
#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 solve(int n, int *L, int *R) {
	vector<int> st;
	int rt = -1;
	vector<int> start(n);
	for(int i = 0; i < n; i++) L[i] = R[i] = -1;
	for(int i = 0; i < n; i++) {
		while(st.size() && !query(start[st.back()], i, st.back(), st.back())) st.pop_back();
		if(st.empty()) {
			if(rt != -1) L[i] = rt;
			rt = i;
		} else {
			R[st.back()] = i;
			st.pop_back();
		}
		for(auto i : st) cout << i << " "; cout << endl;
		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

Compilation message

popa.cpp: In function 'int solve(int, int*, int*)':
popa.cpp:28:23: error: 'query' was not declared in this scope; did you mean 'local::query'?
   28 |   while(st.size() && !query(start[st.back()], i, st.back(), st.back())) st.pop_back();
      |                       ^~~~~
      |                       local::query
popa.cpp:10:6: note: 'local::query' declared here
   10 |  int query(int a, int b, int c, int d) {
      |      ^~~~~
popa.cpp:36:3: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   36 |   for(auto i : st) cout << i << " "; cout << endl;
      |   ^~~
popa.cpp:36:38: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   36 |   for(auto i : st) cout << i << " "; cout << endl;
      |                                      ^~~~