Submission #18760061
Source Code Expand
use proconio::{fastout, input};
fn sum(index: usize, arrays: &Vec<Vec<u64>>) -> u64 {
let mut stack = Vec::new();
let mut idx = index;
let mut pos = 0;
let mut value = 0;
for _ in 0..arrays.len() {
stack.push(idx);
idx /= 2;
}
for i in 0..arrays.len() {
let p = stack[stack.len() - i - 1];
if p != pos {
value ^= arrays[i][p - 1];
pos = p;
}
pos *= 2;
}
value
}
fn multi(idx: usize, y: u64, arrays: &mut Vec<Vec<u64>>) {
let mut index = idx;
for i in (0..arrays.len()).rev() {
arrays[i][index] ^= y;
index /= 2;
}
}
#[fastout]
fn main() {
input! {in_n: usize, in_q: usize, in_as: [u64; in_n]};
let mut arrays = Vec::new();
let mut size = 1;
arrays.push(vec![0; size]);
while size < in_n {
size *= 2;
arrays.push(vec![0; size]);
}
for (i, v) in in_as.iter().enumerate() {
let mut index = i;
for j in (0..arrays.len()).rev() {
arrays[j][index] ^= v;
index /= 2;
}
}
for _ in 0..in_q {
input! {in_t: i32, in_x: u64, in_y: u64};
if in_t == 2 {
let start = (in_x - 1) as usize;
let end = in_y as usize;
println!("{}", sum(start, &arrays) ^ sum(end, &arrays));
} else {
let index = (in_x - 1) as usize;
multi(index, in_y, &mut arrays);
}
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Range Xor Query |
| User | takedarts |
| Language | Rust (1.42.0) |
| Score | 600 |
| Code Size | 1483 Byte |
| Status | AC |
| Exec Time | 247 ms |
| Memory | 17824 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 600 / 600 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt |
| All | handmade_00.txt, handmade_01.txt, max_00.txt, max_01.txt, max_02.txt, max_03.txt, max_04.txt, max_05.txt, max_06.txt, max_07.txt, power_of_2_00.txt, power_of_2_01.txt, power_of_2_02.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, sample_01.txt, sample_02.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| handmade_00.txt | AC | 6 ms | 1972 KiB |
| handmade_01.txt | AC | 2 ms | 2108 KiB |
| max_00.txt | AC | 167 ms | 16940 KiB |
| max_01.txt | AC | 169 ms | 16956 KiB |
| max_02.txt | AC | 163 ms | 16592 KiB |
| max_03.txt | AC | 223 ms | 17124 KiB |
| max_04.txt | AC | 241 ms | 17824 KiB |
| max_05.txt | AC | 247 ms | 17820 KiB |
| max_06.txt | AC | 89 ms | 17404 KiB |
| max_07.txt | AC | 172 ms | 16900 KiB |
| power_of_2_00.txt | AC | 148 ms | 14620 KiB |
| power_of_2_01.txt | AC | 145 ms | 14656 KiB |
| power_of_2_02.txt | AC | 148 ms | 14652 KiB |
| random_00.txt | AC | 130 ms | 9048 KiB |
| random_01.txt | AC | 104 ms | 12156 KiB |
| random_02.txt | AC | 39 ms | 3332 KiB |
| random_03.txt | AC | 129 ms | 12160 KiB |
| random_04.txt | AC | 26 ms | 2764 KiB |
| sample_01.txt | AC | 2 ms | 2064 KiB |
| sample_02.txt | AC | 2 ms | 2020 KiB |