Submission #70035

#TimeUsernameProblemLanguageResultExecution timeMemory
700353zppopa (BOI18_popa)C++14
61 / 100
243 ms708 KiB
#include<bits/stdc++.h> #include "popa.h" using namespace std; int l[1009], r[1009], A[1009]; /*bool query(int a, int b, int c, int d){ int gcd1 = 0, gcd2 = 0; for(int i = a; i <= b; i++) gcd1 = __gcd(gcd1, A[i]); for(int i = c; i <= d; i++) gcd2 = __gcd(gcd2, A[i]); return gcd1 == gcd2; }*/ int SOLVE(int le, int ri, int *Left, int *Right){ if(le > ri) return -1; for(int i = le; i <= ri; i++){ if(l[i] <= le && r[i] >= ri){ int A = SOLVE(le, i - 1, Left, Right); int B = SOLVE(i + 1, ri, Left, Right); Left[i] = A; Right[i] = B; return i; } } } int solve(int N, int* Left, int* Right){ stack<int> S; for(int i = 0; i < N; i++){ while(S.size() && query(S.top(), i,i,i)){ S.pop(); } if(!S.size()) l[i] = 0; else l[i] = S.top() + 1; S.push(i); } while(S.size()) S.pop(); for(int i = N - 1; i >= 0; i--){ while(S.size() && query(i ,S.top(),i,i)){ S.pop(); } if(!S.size()) r[i] = N - 1; else r[i] = S.top() - 1; S.push(i); } return SOLVE(0, N - 1, Left, Right); }

Compilation message (stderr)

popa.cpp: In function 'int SOLVE(int, int, int*, int*)':
popa.cpp:24:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...