Submission #767049

#TimeUsernameProblemLanguageResultExecution timeMemory
767049YassineBenYounesSecret (JOI14_secret)C++17
0 / 100
404 ms8232 KiB
#include<bits/stdc++.h> #include "secret.h" typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef double db; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define pbds tree<pair<int, int>, null_type, less<pair<int, int>>,rb_tree_tag, tree_order_statistics_node_update> using namespace __gnu_pbds; ll gcd(ll a , ll b) {return b ? gcd(b , a % b) : a ;} // greatest common divisor (PGCD) ll lcm(ll a , ll b) {return (a * b) / gcd(a , b);} // least common multiple (PPCM) int dx[8] = {1, 0, 0, -1, 1, 1, -1, -1}; int dy[8] = {0, 1, -1, 0, 1, -1, -1, 1}; #define endl "\n" #define ss second #define ff first #define all(x) (x).begin() , (x).end() #define pb push_back #define vi vector<int> #define vii vector<pair<int,int>> #define vl vector<ll> #define vll vector<pair<ll,ll>> #define pii pair<int,int> #define pll pair<ll,ll> #define pdd pair<double,double> #define vdd vector<pdd> #define speed ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; ////////////////////Only Clear Code////////////////////////// const int mx = 1005; const int LOG = 25; const int inf = 1e9+5; const ll mod = 1e9+7; int range[mx][mx]; //int Secret(int a, int b); void build(int l,int r){ if(r-l <= 1){ return; } int md = (l+r)/2; for(int i = md-1; i >= l;i--){ if(range[i][md] == -1){ range[i][md] = Secret(range[i][i+1], range[i+1][md]); //cout << i << " " << md << endl; } } for(int i = md+1; i <= r;i++){ if(range[md][i] == -1){ range[md][i] = Secret(range[i-1][i], range[md][i-1]); } } build(l, md); build(md, r); } void Init(int N, int A[]){ for(int i = 0; i <= N;i++){ for(int j = 0; j <= N;j++){ range[i][j] = -1; } } for(int i = 0; i < N;i++){ range[i][i+1] = A[i]; } build(0, N); } int Query(int L, int R){ for(int i = L+1;i <= R;i++){ if(range[L][i] != -1 && range[i][R+1] != -1){ return Secret(range[L][i], range[i][R+1]); } } return range[L][R+1]; } /* NEVER GIVE UP! DOING SMTHNG IS BETTER THAN DOING NTHNG!!! Your Guide when stuck: - Continue keyword only after reading the whole input - Don't use memset with testcases - Check for corner cases(n=1, n=0) - Check where you declare n(Be careful of declaring it globally and in main) */
#Verdict Execution timeMemoryGrader output
Fetching results...