Submission #1313404

#TimeUsernameProblemLanguageResultExecution timeMemory
1313404m.zeeshanrashidSecret (JOI14_secret)C++20
0 / 100
333 ms8340 KiB
// #ifdef __AVX2__ // #pragma GCC target "avx2" // #endif // #pragma GCC optimize "O3" // #pragma GCC optimize "unroll-loops" #include <bits/stdc++.h> #include "secret.h" // #include <ext/pb_ds/assoc_container.hpp> // #include <ext/pb_ds/tree_policy.hpp> // using namespace __gnu_pbds; using namespace std; // #define int long long #define elif else if #define all(l) begin(l),end(l) #define rall(l) rbegin(l),rend(l) #define append push_back #define print(l) for(auto i:l) cout<<i<<' '; cout<<endl; #define pprint(a,b) cout<<a<<' '<<b<<endl; #define inp(l) for(auto &i:l) cin>>i; // #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> #define pai make_pair #define endl "\n" #define pii pair<int,int> #define fi first #define se second #define vec vector int ans[1005][1005],n; int a[1005]; void make(int l,int r){ int m=(l+r)/2; ans[m][m]=a[m]; ans[m+1][m+1]=a[m+1]; for(int i=m+2;i<=r;i++){ ans[m+1][i]=Secret(ans[m+1][i-1],a[i]); } for(int i=m-1;i>=l;i--){ ans[m][i]=Secret(ans[m][i+1],a[i]); } if(l<m) make(l,m); if(r>m+1) make(m+1,r); } void Init(int N,int A[]){ n=N; for(int i=0;i<n;i++) a[i]=A[i]; make(0,n-1); } int Query(int L,int R){ int l=0,r=n-1; while(1){ int m=(l+r)/2; if(m>=L and m<R) return Secret(ans[m][L],ans[m+1][R]); if(m==R) return ans[m][L]; if(m<L) l=m+1; else r=m; } return ans[L][R]; }
#Verdict Execution timeMemoryGrader output
Fetching results...