Вопрос:

Изначально автобусная остановка называется строкой s. Затем у мэрии Липецка будет к вам q просьб, при этом просьбы бывают двух видов:

Фотография

Ответ ассистента

```python import sys def solve(): input_data = sys.stdin.read().split() if not input_data: return s = list(input_data[0]) n = len(s) q = int(input_data[1]) # 26 Fenwick trees, one for each letter 'a' through 'z' # bit[char_idx][i] stores existence of character at position i bit = [[0] * (n + 1) for _ in range(26)] def update(char_idx, idx, val): while idx <= n: bit[char_idx][idx] += val idx += idx & (-idx) def query(char_idx, idx): s_val = 0 while idx > 0: s_val += bit[char_idx][idx] idx -= idx & (-idx) return s_val # Initial state for i in range(n): update(ord(s[i]) - 97, i + 1, 1) ptr = 2 results = [] for _ in range(q): type = input_data[ptr] if type == '1': i = int(input_data[ptr+1]) c = input_data[ptr+2] old_c = s[i-1] update(ord(old_c) - 97, i, -1) s[i-1] = c update(ord(c) - 97, i, 1) ptr += 3 else: l = int(input_data[ptr+1]) r = int(input_data[ptr+2]) count = 0 for char_code in range(26): if query(char_code, r) - query(char_code, l - 1) > 0: count += 1 results.append(str(count)) ptr += 3 sys.stdout.write('\n'.join(results) + '\n') if __name__ == '__main__': solve() ```

Другие решения

Что ещё задавали пользователи