Submission #436041

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
4360412021-06-24 06:37:37dacin21Distributing Candies (IOI21_candies)C++17
100 / 100
619 ms27116 KiB
#include "candies.h"
#include <bits/stdc++.h>
using ll = int64_t;
using namespace std;
//really fast iterative segment-tree implementation
template<class Segtree_Data>
struct Segment_Tree{
using T = typename Segtree_Data::node_t;
int n;
vector<T>data;
Segment_Tree(int n_) : n(n_), data(2*n, Segtree_Data::node_init()){
for(int i=n-1;i>=0;--i) data[i] = Segtree_Data::merge_nodes(data[i<<1], data[i<<1|1]);
}
Segment_Tree(vector<T> const&base) : n(base.size()), data(2*n, Segtree_Data::node_init()){
copy(base.begin(), base.end(), data.begin()+n);
for(int i=n-1;i>=0;--i) data[i] = Segtree_Data::merge_nodes(data[i<<1], data[i<<1|1]);
}
void update(int pos, typename Segtree_Data::update_t const&val){
for(Segtree_Data::update_node(data[pos+=n], val); pos>>=1;){
data[pos] = Segtree_Data::merge_nodes(data[pos<<1], data[pos<<1|1]);
}
}
void u(int pos, typename Segtree_Data::update_t const&val){
return update(pos,val);
}
T query(int l, int r) const {
T retL = Segtree_Data::node_ne(), retR = Segtree_Data::node_ne();
for(l+=n, r+=n; l<r; l>>=1, r>>=1){
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...