제출 #70024

#제출 시각아이디문제언어결과실행 시간메모리
70024khohkopopa (BOI18_popa)C++17
0 / 100
180 ms5256 KiB
#include <bits/stdc++.h> #ifndef KHOKHO #include "popa.h" #endif // KHOKHO #pragma GCC optimize("O3") using namespace std; #define ll int #define pb push_back #define fr first #define sc second #define MAX ((ll)(1e12+100)) #define MX ((ll)(1e6+100)) #define ARRS ((ll)(2e6+100)) #define HS ((ll)(233)) #define MOD ((ll)(1e9+7)) #define EP ((double)(1e-9)) #define LG 21 #define mul(a,b) a=((a)*(b))%MOD using namespace std; #ifdef KHOKHO ll aa[ARRS]; ll qr=0; int query(int a, int b, int c, int d){ ll x=0,y=0; qr++; for(int i=a; i<=b; i++)x=__gcd(x,aa[i]); for(int i=c; i<=d; i++)y=__gcd(y,aa[i]); return x==y; } #endif ll l[ARRS]; ll r[ARRS]; ll dp[1100][1100]; ll bld(ll l,ll r,int *lt,int *rt){ ll x=dp[l][r]-1; if(x==-2)return -1; if(x==-1)return -1; //cout<<l<<" "<<r<<" "<<x<<endl; lt[x]=bld(l,x,lt,rt); rt[x]=bld(x+1,r,lt,rt); return x; } ll slv(ll i,ll j){ if(i==j)dp[i][j]=-1; if(dp[i][j])return dp[i][j]; for(int k=i; k<j; k++){ if(slv(i,k)&&slv(k+1,j)&&l[k]<=i&&j-1<=r[k]) {dp[i][j]=k+1;break;} } return dp[i][j]; } int solve(int n, int* lt, int* rt){ for(int i=0; i<n; i++){ l[i]=i; while(l[i]&&query(l[l[i]-1],i,i,i)) l[i]=l[l[i]-1]; } for(int i=n-1; i>=0; i--){ r[i]=i; while(r[i]<n-1&&query(i,r[r[i]+1],i,i)) r[i]=r[r[i]+1]; } // // for(int d=0; d<=n; d++){ // for(int i=0; i<=n-d; i++){ // ll j=i+d; // if(i==j){dp[i][j]=-1;continue;} // for(int k=i; k<j; k++){ // if(dp[i][k]&&dp[k+1][j]&&l[k]<=i&&j-1<=r[k]) // {dp[i][j]=k+1;break;} // } // } // } slv(0,n); return bld(0,n,lt,rt); } #ifdef KHOKHO int pa[ARRS]; int pb[ARRS]; int main(){ #ifdef KHOKHO freopen("in.in","r",stdin); freopen("out.out","w",stdout); #endif // KHOKHO //ios::sync_with_stdio(0); ll n; cin>>n; for(int i=0; i<n; i++){ cin>>aa[i]; } ll rt=solve(n,pa,pb); cout<<rt<<endl; for(int i=0; i<n; i++){ cout<<pa[i]<<" "; } cout<<endl; for(int i=0; i<n; i++){ cout<<pb[i]<<" "; } cout<<endl; cout<<endl; cout<<"asked:"<<qr<<endl; } #endif
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...