update
This commit is contained in:
		
							parent
							
								
									2d3a3ce03b
								
							
						
					
					
						commit
						3eff188a70
					
				
							
								
								
									
										
											BIN
										
									
								
								src/CSP-S2020/2020-CSP-S2.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/CSP-S2020/2020-CSP-S2.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										56
									
								
								src/P5854/P5854.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								src/P5854/P5854.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,56 @@
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#include <istream>
 | 
			
		||||
#include <ostream>
 | 
			
		||||
#include <stack>
 | 
			
		||||
 | 
			
		||||
#ifdef ONLINE_JUDGE
 | 
			
		||||
    #define DEBUG(code)
 | 
			
		||||
#else
 | 
			
		||||
    #define DEBUG(code)code
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
using ll = long long;
 | 
			
		||||
 | 
			
		||||
const ll max_n = 1e7+5;
 | 
			
		||||
struct Node{
 | 
			
		||||
    ll left_child, right_child, val;
 | 
			
		||||
    friend std::ostream& operator<<(std::ostream &os, const Node &n){
 | 
			
		||||
        os<<"Node { val: "<<n.val<<", left_child: "<<n.left_child<<", right_child: "<<n.right_child<<" }";
 | 
			
		||||
        return os;
 | 
			
		||||
    }
 | 
			
		||||
}nodes[max_n];
 | 
			
		||||
ll n;
 | 
			
		||||
std::stack<ll> stk;
 | 
			
		||||
ll root, ans1, ans2;
 | 
			
		||||
 | 
			
		||||
int main(){
 | 
			
		||||
    std::iostream::sync_with_stdio(false), std::cin.tie(nullptr), std::cout.tie(nullptr);
 | 
			
		||||
 | 
			
		||||
    std::cin>>n;
 | 
			
		||||
    for(ll i{1};i<=n;i++){
 | 
			
		||||
        std::cin>>nodes[i].val;
 | 
			
		||||
    }
 | 
			
		||||
    for(ll i{1};i<=n;i++){
 | 
			
		||||
        while(!stk.empty() && nodes[i].val < nodes[stk.top()].val){
 | 
			
		||||
            nodes[i].left_child = stk.top();
 | 
			
		||||
            stk.pop();
 | 
			
		||||
        }
 | 
			
		||||
        if(!stk.empty()){
 | 
			
		||||
            nodes[stk.top()].right_child = i;
 | 
			
		||||
        }else{
 | 
			
		||||
            root = i;
 | 
			
		||||
        }
 | 
			
		||||
        stk.push(i);
 | 
			
		||||
    }
 | 
			
		||||
    DEBUG(
 | 
			
		||||
        std::cout<<root<<'\n';
 | 
			
		||||
    )
 | 
			
		||||
    for(ll i{1};i<=n;i++){
 | 
			
		||||
        DEBUG(
 | 
			
		||||
            std::cout<<nodes[i]<<'\n';
 | 
			
		||||
        )
 | 
			
		||||
        ans1 ^= i * (nodes[i].left_child + 1);
 | 
			
		||||
        ans2 ^= i * (nodes[i].right_child + 1);
 | 
			
		||||
    }
 | 
			
		||||
    std::cout<<ans1<<' '<<ans2<<'\n';
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user