static void Main(string[] args) { int T = int.Parse(Console.ReadLine()); for (int tc = 1; tc <= T; tc++) { n = int.Parse(Console.ReadLine()); a = new node[n + 1]; string[] data = Console.ReadLine().Split(); for (int i = 1; i <= n; i++) { a[i].num = int.Parse(data[i - 1]); a[i].index = i; } int len = compress(); Fenwick_Tree ft = new Fenwick_Tree(len); int ans = 0; for (int i = 1; i <= n; i++) { int freq = ft.query(a[i].idx - 1); ans = (ans + freq + 1) % MOD; ft.update(a[i].idx, freq + 1); } Console.WriteLine("Case {0}: {1}", tc, ans); } }
private void button1_Click(object sender, EventArgs e) { bool b = false; foreach (char c in t.Text) { if (!char.IsDigit(c) && c != ' ') { b = true; break; } } if (t.Text == "" || b) { MessageBox.Show("Error!"); } else { string[] ss = t.Text.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); int[] a = new int[ss.Length]; int i = 0; foreach (string s in ss) { if (!int.TryParse(s, out a[i])) { MessageBox.Show("Error!"); } i++; } f = new Fenwick_Tree(a); Ref(); } }
static void Main(string[] args) { int T = int.Parse(Console.ReadLine()); string bits; for (int tc = 1; tc <= T; tc++) { bits = Console.ReadLine(); Fenwick_Tree ft = new Fenwick_Tree(bits.Length); Console.WriteLine("Case {0}:", tc); int q = int.Parse(Console.ReadLine()); for (int i = 0; i < q; i++) { string[] data = Console.ReadLine().Split(); if (data[0] == "I") { int l = int.Parse(data[1]); int r = int.Parse(data[2]); ft.update(l, r, 1); } else { int pos = int.Parse(data[1]); int bit = int.Parse(bits[pos - 1].ToString()); Console.WriteLine(bit ^ ft.query(pos)); } } } }
public void test_count_prop_bad() { int[] arr_input = new int[] { 0, 1, 2, 3, 4, 5, 6, 7 }; Fenwick_Tree ft = new Fenwick_Tree(arr_input); Assert.AreEqual(false, ft.Count == ft.Count + 1); }
public void test_range_read_bad_data() { int[] arr_input = new int[] { 0, 1, 2, 3, 4, 5, 6, 7 }; Fenwick_Tree ft = new Fenwick_Tree(arr_input); Assert.AreEqual(false, ft.range_read(ft, 2, 4) == 8); }
public void test_count_prop_good() { int[] arr_input = new int[] { 0, 1, 2, 3, 4, 5, 6, 7 }; Fenwick_Tree ft = new Fenwick_Tree(arr_input); Assert.AreEqual(arr_input.GetLength(0), ft.Count); }
public void test_read_good_data() { int[] arr_input = new int[] { 0, 1, 2, 3, 4, 5, 6, 7 }; Fenwick_Tree ft = new Fenwick_Tree(arr_input); Assert.AreEqual(6, ft.read(3)); }
public void test_actual_param_good(int idx, int expected) { int[] arr_input = new int[] { 0, 1, 2, 3, 4, 5, 6, 7 }; Fenwick_Tree ft = new Fenwick_Tree(arr_input); Assert.AreEqual(expected, ft.actual(idx)); }
public void test_actual_bad_data() { int[] arr_input = new int[] { 0, 1, 2, 3, 4, 5, 6, 7 }; Fenwick_Tree ft = new Fenwick_Tree(arr_input); Assert.AreEqual(false, ft.actual(3) == 4); }
static void Main(string[] args) { string[] data = Console.ReadLine().Split(); int N = int.Parse(data[0]); int U = int.Parse(data[1]); int Q = int.Parse(data[2]); Fenwick_Tree ft = new Fenwick_Tree(N); for (int i = 0; i < U + Q; i++) { data = Console.ReadLine().Split(); int op = int.Parse(data[0]); int u = int.Parse(data[1]); int v = int.Parse(data[2]); if (op == 1) { ft.update(u, 2 * v); if (u != 1) { ft.update(u - 1, v); } if (u != N) { ft.update(u + 1, v); } } else { Console.WriteLine(ft.query(u, v)); } } }
public void test_update() { int[] arr_input = new int[] { 0, 1, 2, 3, 4, 5, 6, 7 }; Fenwick_Tree ft = new Fenwick_Tree(arr_input); ft.update(4, 26); Assert.AreEqual(30, ft.actual(4)); }
static void Main(string[] args) { string[] data = Console.ReadLine().Split(); n = int.Parse(data[0]); K = int.Parse(data[1]); a = new node[n]; for (int i = 0; i < n; i++) { a[i].num = int.Parse(Console.ReadLine()); a[i].index = i; } int len = compress(); Fenwick_Tree[] f = new Fenwick_Tree[K + 1]; for (int i = 0; i <= K; ++i) { f[i] = new Fenwick_Tree(len); } int ans = 0; for (int i = 0; i < n; ++i) { for (int k = 1; k <= K; ++k) { int val; if (k - 1 == 0) { val = 1; } else { val = f[k - 1].query(a[i].idx - 1); } f[k].update(a[i].idx, val); if (k == K) { ans = (ans + val) % MOD; } } } Console.WriteLine(ans); }
static void Main(string[] args) { int T = int.Parse(Console.ReadLine()); string[] data; int n, q; for (int tc = 1; tc <= T; tc++) { data = Console.ReadLine().Split(); n = int.Parse(data[0]); q = int.Parse(data[1]); Fenwick_Tree ft = new Fenwick_Tree(n); data = Console.ReadLine().Split(); for (int i = 1; i <= n; i++) { ft.update(i, int.Parse(data[i - 1])); } Console.WriteLine("Case {0}:", tc); for (int i = 0; i < q; i++) { data = Console.ReadLine().Split(); if (data[0] == "1") { int pos = int.Parse(data[1]) + 1; int sack = ft.query(pos, pos); ft.update(pos, -sack); Console.WriteLine(sack); } else if (data[0] == "2") { int pos = int.Parse(data[1]) + 1; int val = int.Parse(data[2]); ft.update(pos, val); } else { int l = int.Parse(data[1]) + 1; int r = int.Parse(data[2]) + 1; Console.WriteLine(ft.query(l, r)); } } } }
static void Main(string[] args) { int t = int.Parse(Console.ReadLine()); while (t-- > 0) { n = int.Parse(Console.ReadLine()); a = new node[n]; string[] data = Console.ReadLine().Split(); for (int i = 0; i < n; i++) { a[i].num = int.Parse(data[i]); a[i].index = i; } int len = compress(); Fenwick_Tree even = new Fenwick_Tree(len); Fenwick_Tree odd = new Fenwick_Tree(len); int ans = 0; for (int i = 0; i < n; i++) { int par = even.query(a[i].idx - 1); int imp = odd.query(a[i].idx - 1); if (a[i].num % 2 == 0) { ans = (ans + imp) % MOD; even.update(a[i].idx, par + 1); odd.update(a[i].idx, imp); } else { ans = (ans + par + 1) % MOD; even.update(a[i].idx, imp); odd.update(a[i].idx, par + 1); } } Console.WriteLine(ans); } }