Submission #1126378

#TimeUsernameProblemLanguageResultExecution timeMemory
1126378monaxiaSecret (JOI14_secret)C++20
In queue
0 ms0 KiB
#include <bits/stdc++.h>
#include "secret.h"
using namespace std;

using ll = long long;

int n;

vector <int> st(4e3 + 5, 0);

void build(int idx, int l, int r, vector <int>& a){
    if(l == r){
        st[idx] = a[l];
        return;
    }

    int mid = (l + r) >> 1;

    build(idx * 2, l, mid, a);
    build(idx * 2 + 1, mid + 1, r, a);

    st[idx] = Secret(st[idx * 2], st[idx * 2 + 1]);
}

int query(int idx, int l, int r, int u, int v){
    if(u <= l && r <= v) return st[idx];

    int mid = (l + r) >> 1;

    int ans = 0;

    bool left = (mid <= v) ? 1 : 0, right = (mid >= l) ? 1 : 0;
    if(left && right) ans = Secret(query(idx * 2, l, mid, u, v), query(idx * 2 + 1, mid + 1, r, u, v));
    if(left && !right) ans = query(idx * 2, l, mid, u, v);
    if(!left && right) ans = query(idx * 2 + 1, mid + 1, r, u, v);

    return ans;
}

void Init(int n, int trash[]){
    vector <int> a(n + 5, 0);

    for(int i = 1; i <= n; i ++){
        a[i] = trash[i - 1];
    }

    build(1, 1, n, a);
}

int Query(int l, int r){
    return query(1, 1, n, l, r);
}

//                                   ++++                                           
//                          ++++-::......:--:::-=+++                                
//                    ++++=:............---.....--:..:=++++++                       
//                    +++++++::......................::=+++++                       
//             @@               ++++++++++:+++++++++                                
//             @%                                  @*                               
//              %%@@                    *****#*@@                                   
//             %%%%%                  @##**##***%                                   
//           @@@@@@+-*#*@             #####%+*##*@                                  
//                  %#+@%%@@@         ##-%:::-#*###@@                               
//                 =====:*:::        ###-:==::=#*%*                                 
//                    -====:::::+@@%@@%@#*--=*#%%#@%@   @%@                         
//                        @=====%=-@%=:::.:+-::::+::::::::::::%-----%% @@@@@        
//                        @@%#*@++%===+::-================@%@@@@+++++++@@@%%%@#%###%
//               @#***#@@   @##=%@===+--:+==+===+%*##@%%%@@@@@@@@@@:=  @%@%%%@#%%   
//    -@      @*#@         #####%:::-====+:::==---**%#@ *%%%%@@@@@@-:               
//    -=-*%  #          #***--%%::::::::+=-+#-----=**@*#     #+**#@#                
//     ----=----#+****=----=*#@=::::::=#-----------***%*%                           
//      ------------%*****##=@==::::::+%-----------***%**                           
//       +-----------------*@++%::::::::-----------****@*#                          
//         =------------% @%=+%#+:::::::* #-----*--**** **                          
//            ----%--%    *==+++++=+=##*:%   ---=--**** **                          
//                       %@@@@@@@@@==@+%%%%@   ----**** *#                          
//                     @=*+%@@@%@@=++=:%:::%      #***@@#                           
//                    #+++++++++#==++-::::::     @**** *#                           
//                   =+++++++++++==+++:::::::   ####@ #%                            
//                  +++++++++++=@ @++++::::::@      @#                              
//                 @+++++++++=@    =*++=:::::@                                      
//                 ++++++++@       @++++:::::                                       
//                ++++++=           =++++:::                                        
//               =+++++@             =+++::::                                       
//             ++++++-@               =+++:+::                                      
//           @::+::::@                 =++::-:::                                    
//          +::=:::::                  @+*+:-+++-:                                  
//        @::+-:::::#                     +++::::::@                                
//       ::%=:::::::%@                    @%++::::***                               
//     @:+@*:::::::****@                   +@+++:-=*:*@                             
//    *:@@%::::::::=****                   @%@+++:::#**@                            
//   *%@@@-:::::::%=+==*@                   +@%+++:***+*                            
//  #%@@%%::::::::#+=-=#                    =+@+++++:::*+                           
// @####+::::::::%+=@#%#=@                  @**@@%=++::::@                          
// @   +:::::::::***#*@ @@###+=+=%@          +**#+=+*+:::-                          
//    =-:::::::%%%%@@          @#=*########%#+*%%+--@*+::%                          
//   +---%@                                   @@ =-:-**:#                           
//  %%%%%                                        @+--*@                             
// @%%%%@                                        @%%%%%                             
//                                                @%%@@