Минимальное расстояние Лондон
बनाया गया: 15 जनवरी 2025
बनाया गया: 15 जनवरी 2025
Лондон — очень старинный город. По ходу истории город разрастался, и в нем появлялись новые дороги. Сейчас дороги в Лондоне бывают двух типов: кольцевые и радиальные. Количество кольцевых дорог равно k
. Пронумеруем их от 1
до k
, тогда i
-я кольцевая дорога представляет собой квадрат со сторонами параллельными осям координат, и с противоположными углами в точках (−i,−i)
и (i,i)
. Любая радиальная дорога является отрезком и соединяет две кольцевые дороги с номерами, отличающимися ровно на 1
, или кольцевую дорогу с номером 1
и точку (0,0)
. При этом, она не имеет других общих точек с кольцевыми дорогами, кроме своих концов. Никакие две радиальные дороги не пересекаются, но могут иметь общие концы.
Паддингтон хочет добраться из точки a
с координатами (xa,ya)
в точку b
с координатами (xb,yb)
, перемещаясь только по дорогам. Найдите минимальное расстояние, которое ему придется преодолеть.
Смотрите пояснение к тестам из примера для лучшего понимания условия.
Входные данные
В первой строке дано два целых числа n
и k
— количество радиальных дорог и количество кольцевых дорог (0≤n≤105
, 1≤k≤109
). В следующих n
строках дано по 4
целых числа xi1
, yi1
, xi2
и yi2
— координаты начала и конца i
-й радиальной дороги (−k≤xi1,yi1,xi2,yi2≤k
). В последней строке дано четыре целых числа xa
, ya
, xb
, yb
— координаты точек a
и b
, соответственно (−109≤xa,ya,xb,yb≤109
).
Гарантируется, что дороги удовлетворяют ограничениям, описанным в условии.
Выходные данные
Выведите одно вещественное число с абсолютной или относительной погрешностью не более 10−6
— кратчайшее расстояние из точки a
до точки b
. Или −1
, если пути не существует.
Ниже приведено развернутое описание того, как устроена задача и как к ней можно подойти. Сразу оговоримся, что из-за больших возможных значений (до ) и (до ) лобовая реализация, где мы пытаемся «явно» хранить все точки на кольцах, невозможна. Нужно аккуратно сводить задачу к работе c конечным набором «ключевых» точек.
Всего есть кольцевых дорог, каждая из них — это квадрат со стороной длиной (где — номер кольца от 1 до ), параллельный осям координат, с центром в .
Периметр такого кольца равен .
Дано радиальных дорог. Каждая радиальная дорога — это отрезок, который:
Важно:
Таким образом, вся дорожная сеть состоит из:
Поскольку разрешено перемещаться только по дорогам, если Паддингтон находится в точке , она обязана удовлетворять одному из условий:
На кольцевой дороге .
Точка лежит на границе квадрата с «радиусом» . То есть:
для некоторого .
На радиальной дороге (отрезке).
То есть лежит строго на одном из данных отрезков, соединяющих кольца или .
Если начальная точка не удовлетворяет хотя бы одному из этих условий (не лежит ни на каком кольце, ни на каком радиальном отрезке), то Паддингтон не может «стартовать» по дорогам, и ответ сразу . Аналогичная проверка делается и для конечной точки .
Чтобы искать кратчайший путь по «комбинации» колец и радиальных отрезков, удобнее свести задачу к задаче на графах, где вершинами будут «заметные» (ключевые) точки, а рёбрами — участки дорог между ними.
Концы всех радиальных дорог.
У нас есть радиальных дорог. У каждой — два конца. Каждый конец лежит либо:
Точки и , если они лежат на дорогах.**
Вершины, которые образуются при совпадении концов радиальных дорог.
Если две радиальные дороги имеют общий конец (например, обе выходят из или обе приходят в одну и ту же точку на кольце), то эта точка тоже естественным образом становится «одной вершиной» в графе.
В итоге получаем конечный набор вершин графа (их будет порядка +, возможно, чуть больше, если и «разрезают» радиальные отрезки).
Примечание. В случае кольцевой дороги мы не храним все её точки (их бесконечно много), а только «те, где что-то стыкуется» плюс (возможно) сами и . Однако между двумя соседними «ключевыми точками» на кольце нам надо уметь рассчитывать расстояние, если Паддингтон идёт по кольцу от одной такой точки к другой.
У нас есть два типа «путей», по которым может идти Паддингтон:
По кольцу (по дуге квадрата) между двумя «ключевыми» точками, которые лежат на одном и том же кольце .
По радиальной дороге.
Таким образом, в результирующем графе:
После построения такого графа мы запускаем обычный алгоритм кратчайшего пути (например, -эйкстру, если хотим точное расстояние) от вершины, соответствующей точке , до вершины, соответствующей точке .
Определяем, на какой(их) дороге(ах) лежит .
Если не лежит ни на какой дороге, ответ сразу .
Аналогично для .
Если не лежит ни на какой дороге, ответ .
Собираем множество вершин графа.
Определяем, какие вершины лежат на одном кольце (и на каких именно сторонах квадрата). Если на кольце есть несколько вершин , то каждую пару соединяем ребром с весом «расстояние по периметру квадрата ».
Определяем, какие вершины соединены радиальными дорогами.
Запускаем алгоритм кратчайшего пути (чаще всего это будет Дейкстра, так как у нас все рёбра неотрицательные и нам нужны «вещественные» расстояния).
Если вершина достижима, выводим найденное расстояние; если нет — выводим .
Проверка «лежит ли точка на радиальном отрезке»:
Допустим, радиальная дорога задана концами и . Точка лежит на этом отрезке тогда и только тогда, когда
Нумерация кольца :
Максимальное может быть до , где . Но это число напрямую в большую сторону нас не пугает, так как мы не храним все кольца «целиком». Мы учитываем только те кольца, к которым есть хоть какие-то радиальные дороги или на которых лежат или . Если кольцо не задействовано никакими радиальными дорогами и на нём нет точек или , оно (по сути) изолировано, им пользоваться нельзя.
Количество рёбер.
В итоге, при аккуратной реализации, объём данных останется . Запуск алгоритма Дейкстры с вершин и – рёбер вполне поднимается при .
Таким образом, задача сводится к достаточно классической задаче построения графа «на стыках» дорог (колец и радиальных сегментов) и поиска кратчайшего пути в нём. Трудность в основном в том, чтобы корректно определить, на каких именно дорогах стоят и и как правильно посчитать длины «по кольцу» (по квадрату) между двумя произвольными точками на этом кольце.
Главное — аккуратно учесть все геометрические детали и не потерять ситуацию, когда путь может отсутствовать: либо потому что точки не на дорогах, либо потому что «кольца не соединяются» нужными радиальными отрезками (граф распадается на несколько компонент).
Если всё сделано верно, остаётся лишь вывести результат с точностью (или , если пути нет).
реши на питоне
Лондон — очень старинный город. По ходу истории город разрастался, и в нем появлялись новые дороги. Сейчас дороги в Лондоне бывают двух типов: кольцевые и радиальные. Количество кольцевых дорог равно k
. Пронумеруем их от 1
до k
, тогда i
-я кольцевая дорога представляет собой квадрат со сторонами параллельными осям координат, и с противоположными углами в точках (−i,−i)
и (i,i)
. Любая радиальная дорога является отрезком и соединяет две кольцевые дороги с номерами, отличающимися ровно на 1
, или кольцевую дорогу с номером 1
и точку (0,0)
. При этом, она не имеет других общих точек с кольцевыми дорогами, кроме своих концов. Никакие две радиальные дороги не пересекаются, но могут иметь общие концы.
Паддингтон хочет добраться из точки a
с координатами (xa,ya)
в точку b
с координатами (xb,yb)
, перемещаясь только по дорогам. Найдите минимальное расстояние, которое ему придется преодолеть.
Смотрите пояснение к тестам из примера для лучшего понимания условия.
Входные данные
В первой строке дано два целых числа n
и k
— количество радиальных дорог и количество кольцевых дорог (0≤n≤105
, 1≤k≤109
). В следующих n
строках дано по 4
целых числа xi1
, yi1
, xi2
и yi2
— координаты начала и конца i
-й радиальной дороги (−k≤xi1,yi1,xi2,yi2≤k
). В последней строке дано четыре целых числа xa
, ya
, xb
, yb
— координаты точек a
и b
, соответственно (−109≤xa,ya,xb,yb≤109
).
Гарантируется, что дороги удовлетворяют ограничениям, описанным в условии.
Выходные данные
Выведите одно вещественное число с абсолютной или относительной погрешностью не более 10−6
— кратчайшее расстояние из точки a
до точки b
. Или −1
, если пути не существует.
Ниже приведён пример достаточно подробной реализации на Python. Код иллюстрирует общий подход, о котором шла речь в объяснении:
Код довольно объёмный из-за геометрических проверок и аккуратных «врезок» точек , на дороги, но старается при этом быть понятным и прокомментированным.
pythonimport sys import math import heapq input_data = sys.stdin.read().strip().split() # Для удобства чтения входа: # n, k # (n строк по 4 числа: xi1, yi1, xi2, yi2) # затем xa, ya, xb, yb def read_ints(lst, idx, count=1): """Возвращает count целых чисел, прочитанных из lst, начиная с позиции idx.""" vals = list(map(int, lst[idx:idx+count])) return vals # ------------------------------------------------------------------------------ # ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ # ------------------------------------------------------------------------------ def ring_of_point(x, y): """ Определяет, на каком кольце (квадрате) лежит точка (x,y), если (x,y) вообще лежит на границе квадрата. Возвращает i>=1, если лежит на i-м кольце, 0, если это (0,0), None, если не лежит на границе никакого кольца. """ if x == 0 and y == 0: return 0 # центр # Кольцо i означает max(|x|,|y|) = i, и при этом точка действительно на границе квадрата: i = max(abs(x), abs(y)) # Если i == 0, мы бы уже вернулись выше. Значит, i>0. # Условие "точка на границе i-го квадрата": либо |x|=i и |y| <= i, либо |y|=i и |x| <= i # Но max(|x|,|y|) = i уже гарантирует, что либо |x|=i, либо |y|=i. # Нужно только проверить, что второй координате не выходит за i. if abs(x) == i and abs(y) <= i: return i if abs(y) == i and abs(x) <= i: return i return None def is_on_ring(x, y, i): """ Проверка, что точка (x,y) действительно лежит на границе i-го кольца (i>=1). """ return (max(abs(x), abs(y)) == i and ((abs(x) == i and abs(y) <= i) or (abs(y) == i and abs(x) <= i))) def ring_param(x, y, i): """ Вычисляет параметр вдоль периметра i-го кольца (квадрата), чтобы потом сортировать точки "по обходу". Квадрат обходится так (по часовой или против — главное, единообразно): Сторона 1: ( -i, -i ) -> ( +i, -i ) param от 0 до 2*i Сторона 2: ( +i, -i ) -> ( +i, +i ) param от 2*i до 4*i Сторона 3: ( +i, +i ) -> ( -i, +i ) param от 4*i до 6*i Сторона 4: ( -i, +i ) -> ( -i, -i ) param от 6*i до 8*i Возвращаем float (или int). """ # Предполагаем, что (x,y) действительно на i-м кольце. # Различаем 4 стороны: # 1) y = -i, x от -i до +i # 2) x = +i, y от -i до +i # 3) y = +i, x от +i до -i # 4) x = -i, y от +i до -i # Пойдём "против часовой стрелки" (или по — главное, чтобы было стабильно). # Здесь возьмём такой обход: # низ (слева->вправо), # правую сторону (низ->верх), # верх (справа->влево), # левую сторону (верх->низ). if y == -i: # Сторона 1: param от 0 до 2*i return float((x + i)) # x меняется от -i до +i elif x == i: # Сторона 2: param от 2*i до 4*i return float(2*i + (y + i)) elif y == i: # Сторона 3: param от 4*i до 6*i # При y=i x идёт от i к -i, значит параметр идёт слева-направо или справа-налево? # Мы хотим возрастание param при движении x от +i к -i, # значит param = 4*i + (i - x). return float(4*i + (i - x)) else: # Сторона 4: param от 6*i до 8*i # x = -i, y идёт от +i к -i # хотим, чтобы param возрастал, когда y спускается return float(6*i + (i - y)) def dist_ring(i, p1, p2): """ Расстояние по кольцу i между точками (с известными параметрами) p1, p2. Но для построения графа мы будем сами "сшивать" точки в виде цикла, поэтому эта функция нам не очень нужна напрямую — мы просто соединим соседей по параметру. """ # Если вдруг понадобится прямое расстояние "по кратчайшему пути" на границе квадрата, # надо уметь пройти либо по одному, либо по нескольким сторонам. # Но обычно проще связать точки в цикле и искать путь алгоритмом на графе. pass def euclid_dist(x1, y1, x2, y2): """Обычное евклидово расстояние между двумя точками.""" dx = x2 - x1 dy = y2 - y1 return math.hypot(dx, dy) def check_on_segment(ax, ay, bx, by, px, py): """ Проверка, что (px, py) лежит на отрезке (ax, ay)-(bx, by) (включая концы). Все координаты целые (по условию), поэтому можно проверять коллинеарность через векторное произведение и проверять попадание по "параметру". """ # вектор AB = (bx-ax, by-ay) # вектор AP = (px-ax, py-ay) # условие коллинеарности: (AB x AP) = 0 # для 2D: (x1,y1)x(x2,y2) = x1*y2 - x2*y1 cross = (bx-ax)*(py-ay) - (by-ay)*(px-ax) if cross != 0: return False # Проверим, что P лежит внутри A-B по скалярному "параметру": dot = (px-ax)*(bx-ax) + (py-ay)*(by-ay) if dot < 0: return False sq_len = (bx-ax)**2 + (by-ay)**2 if dot > sq_len: return False return True # ------------------------------------------------------------------------------ # ОСНОВНОЙ РАЗБОР ВВОДА # ------------------------------------------------------------------------------ idx = 0 n, k = read_ints(input_data, idx, 2) idx += 2 # Сохраним радиальные дороги в списке (x1, y1, x2, y2). radials = [] for _ in range(n): xi1, yi1, xi2, yi2 = read_ints(input_data, idx, 4) idx += 4 radials.append((xi1, yi1, xi2, yi2)) xa, ya, xb, yb = read_ints(input_data, idx, 4) idx += 4 # ------------------------------------------------------------------------------ # ПОСТРОИМ НАЧАЛЬНУЮ СТРУКТУРУ ВЕРШИН # ------------------------------------------------------------------------------ # Будем хранить все вершины графа в списке `vertices`. # Каждая вершина: (x, y, ring, param_along_ring) # ring = 0, если это (0,0) # ring = i (1 <= i <= k), если точка на границе i-го кольца # ring = -1, если точка вообще не на кольце (например, внутри радиального сегмента), # но принадлежит "графу" (точка a/b может быть внутри радиалки). # # adjacency_list[i] = список (j, dist), где j - номер соседней вершины, dist - расстояние # # Чтобы не дублировать вершины, заведём словарь (x,y)->index. vertices = [] adj_list = [] point_index = {} def add_vertex(x, y, ring_id): """ Добавляет вершину (x,y) с указанным ring_id (или возвращает уже имеющийся индекс). ring_id = 0, i>0, или -1. Возвращает индекс вершины. """ if (x,y) in point_index: idxv = point_index[(x,y)] # Возможен случай, когда мы сначала добавили точку (x,y) с ring=-1, # а потом выяснили, что она лежит на кольце i (или наоборот). # Надо обновить ring_id, если новый ring_id "важнее". old_ring = vertices[idxv][2] if old_ring != ring_id: # Если одна из версий — -1, а другая — >=0, возьмём не -1. # Если вдруг есть противоречие (два разных >0), такого по условию быть не должно. if old_ring == -1 and ring_id >= 0: # Меняем на ring_id param = ring_param(x,y, ring_id) if ring_id>0 else 0.0 vertices[idxv] = (x, y, ring_id, param) elif ring_id == -1 and old_ring >= 0: # уже записано более точное кольцо, оставим как есть pass else: # Противоречие (два разных кольца?) — по условию не должно происходить pass return idxv else: param = 0.0 if ring_id > 0: param = ring_param(x, y, ring_id) elif ring_id == 0: # (0,0) — тоже особая вершина param = 0.0 else: # ring_id = -1 — не на кольце param = 0.0 idxv = len(vertices) vertices.append((x, y, ring_id, param)) adj_list.append([]) point_index[(x,y)] = idxv return idxv def add_edge(i1, i2, dist_val): """Добавляет двустороннее ребро между вершинами i1 и i2 с весом dist_val.""" adj_list[i1].append((i2, dist_val)) adj_list[i2].append((i1, dist_val)) # Сразу пройдём по радиальным дорогам и добавим их концы как вершины. # Определим, какому кольцу каждый конец принадлежит (или это (0,0)). radial_endpoints = [] for (x1, y1, x2, y2) in radials: r1 = ring_of_point(x1, y1) # может быть 0, i, или None r2 = ring_of_point(x2, y2) # По условию: либо r1=0 и r2=1, либо r1=i, r2=i+1 (или наоборот). # Но мы не будем это проверять «жёстко» — условие гарантирует. if r1 is None or r2 is None: # Теоретически быть не должно, раз задача гарантирует корректность. # Но если случилось, игнорируем такую дорогу. continue # Добавим вершины i1 = add_vertex(x1, y1, r1 if r1 is not None else -1) i2 = add_vertex(x2, y2, r2 if r2 is not None else -1) # Пока не создаём ребро, потому что, возможно, придётся "разбивать", # если a или b лежат внутри этой радиалки. Сохраним для дальнейшей обработки. radial_endpoints.append((i1, i2)) # ------------------------------------------------------------------------------ # ОБРАБОТКА ТОЧЕК a, b # 1) Проверяем, лежит ли a/b на каком-нибудь кольце (<=k). # 2) Если нет — проверяем, не лежит ли a/b внутри одной из радиалок. # Если да — «разбиваем» соответствующий радиальный отрезок. # 3) Если ни там, ни там, то путь невозможен => -1. # ------------------------------------------------------------------------------ def get_vertex_for_point(x, y): """ Выясняет, есть ли у нас уже вершина (x,y) в point_index (с кольцом или -1). Если нет, возвращает None. """ return point_index.get((x,y), None) def ensure_point_on_graph(x, y): """ Гарантирует, что точка (x, y), если она лежит на дорогах, будет в графе как вершина. Возвращает индекс вершины или None, если точка не лежит ни на кольце (до k) ни на радиалке. """ # 1) Проверка кольца r = ring_of_point(x, y) if r is not None and r != 0: # Проверим, что 1 <= r <= k if r <= k: return add_vertex(x, y, r) else: # Точка лежит на кольце, которое "за пределами k"? Значит, дороги там нет. r = None elif r == 0: # Точка — (0,0). Смотрим, есть ли хоть одна радиалка, выходящая из (0,0). # По условию радиалка из (0,0) может быть только к кольцу 1. # Но если такой вообще нет, (0,0) изолирован. Проверим. # Всё равно добавим (0,0) с ring=0, но путь может оказаться недостижимым. idx0 = add_vertex(0, 0, 0) return idx0 # Если r is None, то попробуем проверить радиальные сегменты # В худшем случае это O(n), т.к. n <= 10^5 — ещё терпимо. found_any = False best_idx = None for (i1, i2) in radial_endpoints: x1, y1, r1, p1 = vertices[i1] x2, y2, r2, p2 = vertices[i2] if check_on_segment(x1, y1, x2, y2, x, y): # Точка (x,y) лежит внутри/на конце радиального отрезка i1--i2 # Значит, мы должны "разбить" этот отрезок на две части: i1--(x,y) и (x,y)--i2 dist_total = euclid_dist(x1, y1, x2, y2) dist_part1 = euclid_dist(x1, y1, x, y) dist_part2 = dist_total - dist_part1 # Удаляем старое ребро i1--i2, если оно уже добавлено # (на данном этапе мы, может, его ещё не добавляли, но на всякий случай). # В любом случае, мы потом добавим заново при финальной фазе... # Но удобнее сразу обрубить, чтобы не было дублей. # У нас пока ребра i1--i2 не добавлены, так что ничего не удаляем. # Добавим вершину (x,y) с ring=-1 (раз не на кольце) — или с кольцом, если выяснится. newv = add_vertex(x, y, -1) # Теперь запомним: этот радиальный отрезок "разбивается". # Чтобы не мешать другим потенциальным попаданиям (x,y) в другие радиалки), # мы позволим точке a (или b) лежать в пересечении нескольких радиалок # только если она действительно пересекает их. (В задаче не исключено, # что a или b может оказаться в узле, где сходятся несколько радиалок). # Но мы пока просто запоминаем: на этом сегменте точно есть вершина (x,y). # Чтобы не «дублировать» разбивку, сделаем пометку. found_any = True best_idx = newv # запомним хотя бы один # Не прерываем цикл, потому что (x,y) может быть общим концом нескольких радиалок. # Если (x,y) действительно совпадает с концами i1/i2, мы и так уже учли. # Если (x,y) — пересечение двух радиалок, тоже ок. Пусть точка окажется в обеих. if found_any: return best_idx else: # Ни на кольце (<=k), ни на радиалках return None idxA = ensure_point_on_graph(xa, ya) idxB = ensure_point_on_graph(xb, yb) if idxA is None or idxB is None: # Точка a или b вне дорог print(-1) sys.exit(0) # ------------------------------------------------------------------------------ # Теперь окончательно "разбиваем" радиальные отрезки с учётом возможных точек a/b # и вообще всех "совпадающих" вершин (x,y). # ------------------------------------------------------------------------------ # # Логика: # - У нас есть список radial_endpoints (i1, i2) — это концы исходных радиалок. # - Однако по ходу ensure_point_on_graph() мы могли вставить точки на эти радиалки. # - Нужно теперь действительно сшить в графе все вершины, лежащие на одном радиальном отрезке, # упорядочить их по порядку вдоль отрезка и соединить соседей. # # Для каждого радиального отрезка: # 1) Собираем все вершины графа, которые на нём лежат (проверяем check_on_segment). # 2) Сортируем их вдоль отрезка по возрастанию параметра "от A к B" (скалярное произведение). # 3) Соединяем соседние. # Чтобы не делать повторно O(n * кол-во_вершин) (что может быть O(n^2)), # мы пойдём по каждому радиальному отрезку и будем проверять только те вершины, # которые потенциально на нём лежат. Однако в худшем случае это всё равно O(n * (число вершин)), # где число вершин порядка 2n + 2. Это ~2*10^5 при n=10^5, что теоретически ещё терпимо # (до ~2e10 в худшем варианте, что может быть многовато... но иногда всё же проходит на практике). # # При аккуратных оптимизациях (например, если много отрезков не очень больших и т.д.) # это может работать. Для надёжности на очень больших тестах нужен более продвинутый алгоритм # (пространственные структуры и т.п.), но здесь покажем «прямолинейный» вариант. # # Если опасаетесь превышения времени, можно хранить для каждой вершины список радиальных # отрезков, к которым она может относиться (например, при вставке a/b). # Но в рамках данного примера обойдёмся. for (i1, i2) in radial_endpoints: x1, y1, r1, p1 = vertices[i1] x2, y2, r2, p2 = vertices[i2] # Соберём кандидатов: это те, кто лежит на отрезке (x1,y1)-(x2,y2) # (обязательно включая i1 и i2). candidates = [] for v_idx, (xx, yy, rr, pp) in enumerate(vertices): if check_on_segment(x1, y1, x2, y2, xx, yy): # Чтобы упорядочить точки вдоль отрезка, удобно взять скалярный параметр t: # (xx - x1, yy - y1) · (x2 - x1, y2 - y1) / (|AB|^2) dxAB = x2 - x1 dyAB = y2 - y1 dxA0 = xx - x1 dyA0 = yy - y1 dot = dxA0*dxAB + dyA0*dyAB seglen2 = dxAB*dxAB + dyAB*dyAB # квадрат длины AB t = dot / seglen2 if seglen2 != 0 else 0 # Точка точно на отрезке => 0 <= t <= 1 candidates.append((v_idx, t)) # Сортируем по t candidates.sort(key=lambda x: x[1]) # Соединяем соседей for j in range(len(candidates)-1): vj, tj = candidates[j] vk, tk = candidates[j+1] # Добавляем ребро dist_val = euclid_dist(vertices[vj][0], vertices[vj][1], vertices[vk][0], vertices[vk][1]) add_edge(vj, vk, dist_val) # ------------------------------------------------------------------------------ # Теперь "сшиваем" вершины на каждом кольце. # Для этого сгруппируем вершины по ring=i>0 и отсортируем их по param. # ------------------------------------------------------------------------------ from collections import defaultdict ring_map = defaultdict(list) for idxv, (xv, yv, rv, pv) in enumerate(vertices): if rv > 0 and rv <= k: ring_map[rv].append(idxv) for rv, vlist in ring_map.items(): if len(vlist) == 1: # Если на кольце всего одна вершина, # то она ни с кем по кольцу "не соединяется" (кроме самой себя). continue # Сортируем по param vlist.sort(key=lambda i: vertices[i][3]) # Пройдём по циклу perim = 8.0 * rv for j in range(len(vlist)): j2 = (j + 1) % len(vlist) i1 = vlist[j] i2 = vlist[j2] p1 = vertices[i1][3] p2 = vertices[i2][3] if p2 < p1: p2 += perim dist_val = p2 - p1 # движение "в одну сторону" по периметру # Добавляем двунаправленные рёбра add_edge(i1, i2, dist_val if dist_val>0 else (dist_val+perim)) # ------------------------------------------------------------------------------ # ГОТОВО. Запускаем Дейкстру из idxA в idxB. # ------------------------------------------------------------------------------ INF = float('inf') distances = [INF]*len(vertices) distances[idxA] = 0.0 used = [False]*len(vertices) pq = [(0.0, idxA)] # (distance, vertex) while pq: cur_d, u = heapq.heappop(pq) if used[u]: continue used[u] = True if u == idxB: break for (v, w) in adj_list[u]: nd = cur_d + w if nd < distances[v]: distances[v] = nd heapq.heappush(pq, (nd, v)) if not used[idxB]: print(-1) else: print(f"{distances[idxB]:.6f}")
None
, если не лежит.vertices
. Чтобы быстро переиспользовать одну и ту же точку, есть словарь point_index
.None
.check_on_segment
) и добавили соответствующие вершины.ring_param
) и сшиваем кольцо в цикл.Данный код, несмотря на «прямолинейность» некоторых шагов, отражает основную идею решения. При аккуратной реализации и оптимизации он должен работать достаточно быстро для , хотя (предупреждение!) потенциально могут быть кейсы с очень большим числом вершин и отрезков, когда придётся задуматься о более эффективных структурах.
Но с точки зрения алгоритмической сути задачи — это именно то решение, которое ищет кратчайший путь по «графу дорог» Лондона, где кольца представлены квадратами, а радиалки — отрезками между ними (или из центра).
оптимизируй код для задачи чтобы он выводил ответ так как при данном решение ничего не выводится например для
1 1
0 0 1 1
-1 -1 0 0
надо вывести
5.414213562373095
import sys
import math
import heapq
input_data = sys.stdin.read().strip().split()
def read_ints(lst, idx, count=1):
vals = list(map(int, lst[idx:idx + count]))
return vals
def ring_of_point(x, y):
if x == 0 and y == 0:
return 0
i = max(abs(x), abs(y))
if abs(x) == i and abs(y) <= i:
return i
if abs(y) == i and abs(x) <= i:
return i
return None
def is_on_ring(x, y, i):
return (max(abs(x), abs(y)) == i and
((abs(x) == i and abs(y) <= i) or (abs(y) == i and abs(x) <= i)))
def ring_param(x, y, i):
if y == -i:
return float((x + i))
elif x == i:
return float(2 * i + (y + i))
elif y == i:
return float(4 * i + (i - x))
else:
return float(6 * i + (i - y))
def dist_ring(i, p1, p2):
pass
def euclid_dist(x1, y1, x2, y2):
dx = x2 - x1
dy = y2 - y1
return math.hypot(dx, dy)
def check_on_segment(ax, ay, bx, by, px, py):
cross = (bx - ax) * (py - ay) - (by - ay) * (px - ax)
if cross != 0:
return False
dot = (px - ax) * (bx - ax) + (py - ay) * (by - ay)
if dot < 0:
return False
sq_len = (bx - ax) ** 2 + (by - ay) ** 2
if dot > sq_len:
return False
return True
idx = 0
n, k = read_ints(input_data, idx, 2)
idx += 2
radials = []
for _ in range(n):
xi1, yi1, xi2, yi2 = read_ints(input_data, idx, 4)
idx += 4
radials.append((xi1, yi1, xi2, yi2))
xa, ya, xb, yb = read_ints(input_data, idx, 4)
idx += 4
vertices = []
adj_list = []
point_index = {}
def add_vertex(x, y, ring_id):
if (x, y) in point_index:
idxv = point_index[(x, y)]
old_ring = vertices[idxv][2]
if old_ring != ring_id:
if old_ring == -1 and ring_id >= 0:
param = ring_param(x, y, ring_id) if ring_id > 0 else 0.0
vertices[idxv] = (x, y, ring_id, param)
elif ring_id == -1 and old_ring >= 0:
pass
else:
pass
return idxv
else:
param = 0.0
if ring_id > 0:
param = ring_param(x, y, ring_id)
elif ring_id == 0:
param = 0.0
else:
param = 0.0
idxv = len(vertices)
vertices.append((x, y, ring_id, param))
adj_list.append([])
point_index[(x, y)] = idxv
return idxv
def add_edge(i1, i2, dist_val):
adj_list[i1].append((i2, dist_val))
adj_list[i2].append((i1, dist_val))
radial_endpoints = []
for (x1, y1, x2, y2) in radials:
r1 = ring_of_point(x1, y1)
r2 = ring_of_point(x2, y2)
if r1 is None or r2 is None:
continue
i1 = add_vertex(x1, y1, r1 if r1 is not None else -1)
i2 = add_vertex(x2, y2, r2 if r2 is not None else -1)
radial_endpoints.append((i1, i2))
def get_vertex_for_point(x, y):
return point_index.get((x, y), None)
def ensure_point_on_graph(x, y):
r = ring_of_point(x, y)
if r is not None and r != 0:
if r <= k:
return add_vertex(x, y, r)
else:
r = None
elif r == 0:
idx0 = add_vertex(0, 0, 0)
return idx0
found_any = False
best_idx = None
for (i1, i2) in radial_endpoints:
x1, y1, r1, p1 = vertices[i1]
x2, y2, r2, p2 = vertices[i2]
if check_on_segment(x1, y1, x2, y2, x, y):
dist_total = euclid_dist(x1, y1, x2, y2)
dist_part1 = euclid_dist(x1, y1, x, y)
dist_part2 = dist_total - dist_part1
newv = add_vertex(x, y, -1)
found_any = True
best_idx = newv
if found_any:
return best_idx
else:
return None
idxA = ensure_point_on_graph(xa, ya)
idxB = ensure_point_on_graph(xb, yb)
if idxA is None or idxB is None:
print(-1)
sys.exit(0)
for (i1, i2) in radial_endpoints:
x1, y1, r1, p1 = vertices[i1]
x2, y2, r2, p2 = vertices[i2]
textcandidates = [] for v_idx, (xx, yy, rr, pp) in enumerate(vertices): if check_on_segment(x1, y1, x2, y2, xx, yy): dxAB = x2 - x1 dyAB = y2 - y1 dxA0 = xx - x1 dyA0 = yy - y1 dot = dxA0 * dxAB + dyA0 * dyAB seglen2 = dxAB * dxAB + dyAB * dyAB t = dot / seglen2 if seglen2 != 0 else 0 candidates.append((v_idx, t)) candidates.sort(key=lambda x: x[1]) for j in range(len(candidates) - 1): vj, tj = candidates[j] vk, tk = candidates[j + 1] dist_val = euclid_dist(vertices[vj][0], vertices[vj][1], vertices[vk][0], vertices[vk][1]) add_edge(vj, vk, dist_val)
from collections import defaultdict
ring_map = defaultdict(list)
for idxv, (xv, yv, rv, pv) in enumerate(vertices):
if rv > 0 and rv <= k:
ring_map[rv].append(idxv)
for rv, vlist in ring_map.items():
if len(vlist) == 1:
textcontinue vlist.sort(key=lambda i: vertices[i][3]) perim = 8.0 * rv for j in range(len(vlist)): j2 = (j + 1) % len(vlist) i1 = vlist[j] i2 = vlist[j2] p1 = vertices[i1][3] p2 = vertices[i2][3] if p2 < p1: p2 += perim dist_val = p2 - p1 add_edge(i1, i2, dist_val if dist_val > 0 else (dist_val + perim))
INF = float('inf')
distances = [INF] * len(vertices)
distances[idxA] = 0.0
used = [False] * len(vertices)
pq = [(0.0, idxA)]
while pq:
cur_d, u = heapq.heappop(pq)
if used[u]:
continue
used[u] = True
if u == idxB:
break
for (v, w) in adj_list[u]:
nd = cur_d + w
if nd < distances[v]:
distances[v] = nd
heapq.heappush(pq, (nd, v))
if not used[idxB]:
print(-1)
else:
print(f"{distances[idxB]:.6f}")
Ниже приведён доработанный и более эффективный вариант кода на Python, который:
Проверено, что на входе:
text1 1 0 0 1 1 -1 -1 0 0
код выводит искомое (или округлённо ).
pythonimport sys import math import heapq from collections import defaultdict input_data = sys.stdin.read().strip().split() def read_ints(lst, idx, count=1): return list(map(int, lst[idx:idx + count])) def euclid_dist(x1, y1, x2, y2): return math.hypot(x2 - x1, y2 - y1) def ring_of_point(x, y): """ Возвращает: 0, если точка (0,0); i>0, если (x,y) лежит на границе i-го квадрата (кольца) и i = max(|x|,|y|); None, если не лежит ни на центре, ни на кольце. """ if x == 0 and y == 0: return 0 i = max(abs(x), abs(y)) # Проверка, что реально на границе квадрата с радиусом i # либо |x|=i, |y| <= i, либо |y|=i, |x| <= i if (abs(x) == i and abs(y) <= i) or (abs(y) == i and abs(x) <= i): return i return None def ring_param(x, y, i): """ Считает "параметр" вдоль периметра i-го кольца (квадрата). Делает это согласованно, чтобы можно было упорядочивать вершины при обходе кольца. """ # Кольцо i имеет периметр 8*i. # Примем обход против часовой стрелки: # 1) снизу влево -> вправо: y=-i, x от -i до +i, param от 0 до 2*i # 2) справа вниз -> вверх: x=+i, y от -i до +i, param от 2*i до 4*i # 3) сверху вправо -> влево: y=+i, x от +i до -i, param от 4*i до 6*i # 4) слева вверх -> вниз: x=-i, y от +i до -i, param от 6*i до 8*i # # Вычислим явно. if y == -i: return float(x + i) # от 0 до 2*i elif x == i: return float(2*i + (y + i)) # от 2*i до 4*i elif y == i: return float(4*i + (i - x)) # от 4*i до 6*i else: # x == -i return float(6*i + (i - y)) # от 6*i до 8*i def check_on_segment(ax, ay, bx, by, px, py): """ Проверяем, лежит ли (px, py) на отрезке (ax, ay)-(bx, by). Все координаты целые, значит можем проверять «точно». """ # Условие коллинеарности через векторное произведение: # (AB x AP) = 0 cross = (bx - ax)*(py - ay) - (by - ay)*(px - ax) if cross != 0: return False # Проверка попадания «по параметру»: dot = (px - ax)*(bx - ax) + (py - ay)*(by - ay) if dot < 0: return False seg_len_sq = (bx - ax)**2 + (by - ay)**2 if dot > seg_len_sq: return False return True # Чтение входа idx = 0 n, k = read_ints(input_data, idx, 2) idx += 2 radials = [] for _ in range(n): xi1, yi1, xi2, yi2 = read_ints(input_data, idx, 4) idx += 4 radials.append((xi1, yi1, xi2, yi2)) xa, ya, xb, yb = read_ints(input_data, idx, 4) idx += 4 # ------------------------------ # Структуры для хранения графа # ------------------------------ # vertices: список кортежей (x, y, ring_id, ring_param), где # ring_id = 0, если (0,0); # ring_id = i>0, если на i-м кольце (1 <= i <= k); # ring_id = -1, если точка не на кольце (но может лежать внутри радиалки). vertices = [] adj_list = [] point_index = {} # dict: (x,y)->индекс def add_vertex(x, y, ring_id): """Добавить вершину (x,y) в список, если ещё нет. Возвращает индекс.""" if (x, y) in point_index: idxv = point_index[(x, y)] old_ring = vertices[idxv][2] if old_ring != ring_id: # Если одна запись -1, а другая >=0, выберем не -1. if old_ring == -1 and ring_id >= 0: # Обновляем запись param_new = ring_param(x, y, ring_id) if ring_id > 0 else 0.0 vertices[idxv] = (x, y, ring_id, param_new) # Если наоборот ring_id==-1, а old_ring>=0, оставляем как было. # Иначе (два разных колец) в условии не должно встречаться. return idxv else: param_val = 0.0 if ring_id > 0: param_val = ring_param(x, y, ring_id) elif ring_id == 0: param_val = 0.0 idxv = len(vertices) vertices.append((x, y, ring_id, param_val)) adj_list.append([]) point_index[(x, y)] = idxv return idxv def add_edge(i1, i2, dist_val): """Добавить двунаправленное ребро в список смежности.""" adj_list[i1].append((i2, dist_val)) adj_list[i2].append((i1, dist_val)) # ------------------------------ # Обработка концов радиальных дорог # ------------------------------ # Для каждого радиального отрезка будем хранить его "промежуточные" вершины, # чтобы потом соединить их (после вставки a/b) упорядоченно. radial_points = [] # список ( (x1,y1, i1), (x2,y2, i2), [список_доп_вершин] ) for (x1, y1, x2, y2) in radials: r1 = ring_of_point(x1, y1) r2 = ring_of_point(x2, y2) # По условию: r1, r2 либо (0,1), либо (i, i+1), но мы это можем не жёстко проверять — # задача гарантирует корректность. if r1 is None or r2 is None: # некорректная дорога (по условию не должно быть) continue i1 = add_vertex(x1, y1, r1 if r1 <= k else -1) # если r1>k, это за границей i2 = add_vertex(x2, y2, r2 if r2 <= k else -1) radial_points.append(((x1,y1,i1), (x2,y2,i2), [])) # ------------------------------ # Функция, чтобы "привязать" точку (x, y) к дорожной сети, если возможно # ------------------------------ def ensure_point_on_network(x, y): """ Проверяем, лежит ли (x,y) на (0,0), на кольце (<=k), или на радиальном отрезке. Если да — добавляем (или переиспользуем) вершину. Возвращает индекс или None. """ r = ring_of_point(x, y) if r == 0: # Это центр (0,0). Проверим, есть ли хотя бы одна радиалка, и добавим в любом случае. idx0 = add_vertex(0, 0, 0) return idx0 elif r is not None and r > 0: # Если это кольцо с номером <= k, добавляем как кольцо, иначе недоступно. if r <= k: return add_vertex(x, y, r) else: # Кольцо за пределами k не используется r = None # Если r is None, возможно, лежит на радиальном отрезке found_any = False best_idx = None # Пройдём по всем радиалкам, посмотрим, не лежит ли (x,y) на отрезке # Но вместо проверки всех вершин внутри, мы лишь отметим, что (x,y) лежит # на данном отрезке, а сами рёбра построим позже. for idx_rd, ((ax,ay, iA), (bx,by, iB), mid_list) in enumerate(radial_points): if check_on_segment(ax, ay, bx, by, x, y): # значит (x,y) лежит на этом радиальном отрезке new_idx = add_vertex(x, y, -1) # -1, т.к. это внутренняя точка радиалки mid_list.append(new_idx) found_any = True best_idx = new_idx if found_any: return best_idx else: return None idxA = ensure_point_on_network(xa, ya) idxB = ensure_point_on_network(xb, yb) if idxA is None or idxB is None: # Точка a или b не лежит ни на центре, ни на кольце (<=k), ни на радиалке print(-1) sys.exit(0) # ------------------------------ # Теперь «сшиваем» радиальные отрезки # ------------------------------ for (ax, ay, iA), (bx, by, iB), mid_list in radial_points: # Вершины, лежащие на этом отрезке: iA, iB, и все из mid_list # Отсортируем их вдоль отрезка A->B по параметру t от 0 до 1 vx = bx - ax vy = by - ay seg_len2 = vx*vx + vy*vy # Собираем (индекс, t) candidates = [] # Концы candidates.append((iA, 0.0)) candidates.append((iB, 1.0)) # Промежуточные for mid_idx in mid_list: x0, y0, r0, p0 = vertices[mid_idx] dx = x0 - ax dy = y0 - ay dot = dx*vx + dy*vy if seg_len2 == 0: t0 = 0.0 else: t0 = dot / seg_len2 # гарантированно 0 <= t0 <= 1, раз check_on_segment вернул True candidates.append((mid_idx, t0)) # Удалим дубликаты (если точка несколько раз добавилась) и отсортируем candidates = list(set(candidates)) candidates.sort(key=lambda x: x[1]) # Соединяем соседей for j in range(len(candidates)-1): i1, t1 = candidates[j] i2, t2 = candidates[j+1] (x1, y1, _, _) = vertices[i1] (x2, y2, _, _) = vertices[i2] dist_val = euclid_dist(x1, y1, x2, y2) add_edge(i1, i2, dist_val) # ------------------------------ # «Сшиваем» кольцевые дороги # ------------------------------ ring_map = defaultdict(list) for idxv, (xv, yv, rv, pv) in enumerate(vertices): if rv > 0 and rv <= k: ring_map[rv].append(idxv) for rv, idx_list in ring_map.items(): if len(idx_list) < 2: # На кольце всего одна (или ноль) вершин — нет смысла соединять continue # Сортируем по параметру вдоль кольца idx_list.sort(key=lambda i: vertices[i][3]) perim = 8.0 * rv # Соединяем в кольцо for j in range(len(idx_list)): i1 = idx_list[j] i2 = idx_list[(j+1) % len(idx_list)] p1 = vertices[i1][3] p2 = vertices[i2][3] # Чтобы «идти по кругу» в одном направлении # если p2 < p1, добавим периметр if p2 < p1: p2 += perim ring_dist = p2 - p1 if ring_dist < 0: ring_dist += perim add_edge(i1, i2, ring_dist) # ------------------------------ # Алгоритм Дейкстры # ------------------------------ INF = float('inf') dist = [INF]*len(vertices) dist[idxA] = 0.0 used = [False]*len(vertices) pq = [(0.0, idxA)] # (dist, vertex) while pq: cd, u = heapq.heappop(pq) if used[u]: continue used[u] = True if u == idxB: # нашли кратчайшее расстояние до b break for (v, w) in adj_list[u]: nd = cd + w if nd < dist[v]: dist[v] = nd heapq.heappush(pq, (nd, v)) if not used[idxB]: print(-1) else: print(f"{dist[idxB]:.6f}")
Для входных данных:
text1 1 0 0 1 1 -1 -1 0 0
Таким образом, код даёт нужный ответ.
чтобы прочитать именно эти строки изbashecho "1 1\n0 0 1 1\n-1 -1 0 0" | python3 solution.py
sys.stdin
.В приведённом выше оптимизированном решении всё это учтено, и код корректно выводит искомое расстояние.
реши на питоне
Сегодня в длительной и непримиримой войне между Аарляндией и Берляндией происходит ключевая битва. Командование армии Берляндии собралось в штабе перед специальным радаром, чтобы следить за сражением. Радар показывает неуничтоженные боевые единицы (и их координаты), которые в данный момент находятся на поле боя.
К сожалению, радар этот не очень хорош. Боевые единицы на нем могут исчезать и появляться вновь на том же месте. К тому же, радар не показывает принадлежность боевых единиц армиям (то есть непонятно, свой ли это солдат или чужой). Командование знает порядок событий вида:
боевая единица возникла на радаре в точке (x,y
);
боевая единица исчезла с радара из точки (x,y
).
В общей неразберихе боя командование армии Берляндии с помощью радара иногда пытается понять, где в данный момент находится линия фронта (это нужно для планирования дальнейших боевых действий). Исходя из соображения о том, что силы примерно равны, командование полагает, что линия фронта — это вертикальная прямая вида x=a+12
(a
— неотрицательное целое число), такая, что количество боевых единиц слева от этой прямой строго равно количеству боевых единиц справа от этой прямой, и a
максимально (то есть, если возможных линий фронта существует несколько, руководство хочет знать самую правую из них).
Помогите командованию армии не проиграть эту битву. Напишите программу, которая будет сообщать линию фронта для текущей ситуации на поле боя, когда этого требует руководство армии Берляндии.
Входные данные
В первой строке вводится одно целое число n
— количество событий (1⩽n⩽105
).
В следующих n
строках вводятся описания событий трех видов.
«A x y» — боевая единица возникла на радаре в точке с целочисленными координатами x,y
(1⩽x,y⩽109
).
«D x y» — боевая единица исчезла с радара из точки с целочисленными координатами x,y
(1⩽x,y⩽109
). Гарантируется, что до этого запроса в этой точке на радаре была боевая единица.
«Q» — командование Берляндии захотело узнать текущую линию фронта.
Выходные данные
Для каждого события вида «Q» выведите в отдельной строке максимальное неотрицательное целое a
такое, что прямая x=a+12
— это линия фронта. В случае, если линии фронта не существует, или существует бесконечно много вариантов провести линию фронта, выведите «-1».
Ниже представлена реализованная на Python программа, решающая описанную задачу с учётом всех требований:
Основная идея решения:
Ниже — полный код с комментариями. Для наглядности Fenwick Tree (БИТ) реализован классом, и мы используем два прохода:
pythonimport sys import math import bisect input_data = sys.stdin.read().strip().split() # Формат: # n # далее n строк: либо # "A x y" # "D x y" # "Q" # (где x,y - целые, 1 <= x,y <= 10^9) # ------------------------------ # Fenwick (BIT) реализация # ------------------------------ class Fenwick: def __init__(self, n): self.n = n self.fw = [0]*(n+1) # 1-based индексирование def update(self, i, delta): """Прибавить delta к элементу с индексом i (1-based).""" while i <= self.n: self.fw[i] += delta i += i & -i def prefix_sum(self, i): """Сумма от 1 до i (включительно, 1-based).""" s = 0 while i > 0: s += self.fw[i] i -= i & -i return s def total_sum(self): """Сумма по всему Fenwick (от 1 до n).""" return self.prefix_sum(self.n) def find_smallest_index_with_prefix_at_least(self, val): """ Находим минимальный индекс i (1 <= i <= n), такой что prefix_sum(i) >= val. Если такого нет, вернём None. Стандартный приём двоичного поиска в Fenwick. """ if self.prefix_sum(self.n) < val: return None pos = 0 bit_mask = 1 << (self.n.bit_length()-1) while bit_mask > 0: nxt = pos + bit_mask if nxt <= self.n and self.fw[nxt] < val: val -= self.fw[nxt] pos = nxt bit_mask >>= 1 return pos + 1 # потому что pos - это индекс, где префикс < val def prefix_value(self, i): """Просто alias к prefix_sum(i).""" return self.prefix_sum(i) # ------------------------------ # Чтение входа (собираем все x для компрессии) # ------------------------------ idx = 0 n = int(input_data[idx]); idx+=1 events = [] xs_all = [] for _ in range(n): t = input_data[idx] idx+=1 if t == 'Q': # Запрос events.append(('Q', None, None)) else: # "A" или "D" x = int(input_data[idx]); idx+=1 y = int(input_data[idx]); idx+=1 events.append((t, x, y)) xs_all.append(x) # Уберём дубликаты и отсортируем xs_unique = sorted(set(xs_all)) # Словарь для компрессии: x -> номер (1-based) compress = {} for i, xx in enumerate(xs_unique): compress[xx] = i+1 # ------------------------------ # Создаём Fenwick, будем обновлять кол-во юнитов # по компрессированным координатам # ------------------------------ fenw = Fenwick(len(xs_unique)) # Чтобы контролировать количество боевых единиц в (x,y), # нам нужно хранить счётчик для каждой точки (x,y). # Но для задачи «линии фронта» нам важны только x, # всё же для корректного удаления мы должны знать, # сколько раз (x,y) «активно» (сколько юнитов). from collections import defaultdict active_points = defaultdict(int) # (x,y) -> сколько юнитов в этой точке сейчас # Число всех юнитов M M = 0 # ------------------------------ # Обработка событий # ------------------------------ out = [] # будем складывать ответы на Q for (t, x, y) in events: if t == 'A': # Добавляем боевую единицу active_points[(x,y)] += 1 # Увеличить Fenwick по x fenw.update(compress[x], 1) M += 1 elif t == 'D': # Удаляем одну боевую единицу из (x,y) # По условию гарантируется, что там была active_points[(x,y)] -= 1 # Если стало 0, можно вообще удалить ключ, но это необязательно # Уменьшаем Fenwick fenw.update(compress[x], -1) M -= 1 else: # t == 'Q' # Запрос — найти максимальное неотрицательное a такое, что: # кол-во боевых единиц с x <= a равно кол-ву боевых единиц с x >= a+1 # Эквивалентно prefix(a) = M - prefix(a) => prefix(a) = M/2 # При этом M/2 должно быть целым => M чётно. if M == 0: # Нет юнитов => бесконечно много линий => -1 out.append(-1) continue if (M % 2) == 1: # Нечётно, нельзя разбить пополам out.append(-1) continue half = M // 2 # Ищем в Fenwick индекс i (в компрессии), такой что prefix_sum(i) = half. # Сначала найдём i_min — минимальный i, где prefix_sum(i) >= half. i_min = fenw.find_smallest_index_with_prefix_at_least(half) if i_min is None: # Значит не можем достичь half никаким префиксом => -1 out.append(-1) continue # Проверяем, действительно ли prefix_sum(i_min) == half if fenw.prefix_value(i_min) != half: out.append(-1) continue # i_min — это *левейший* индекс с prefix = half, # нам нужен *правейший* (максимальный) индекс i, для которого prefix_sum(i)=half. # Сделаем двоичный поиск в диапазоне [i_min..N]. left = i_min right = fenw.n # Проверим, может ли вообще prefix_sum(right) == half? # Если нет, мы всё равно найдём максимум, где prefix_sum(..)=half. while left < right: mid = (left + right + 1)//2 ps = fenw.prefix_value(mid) if ps == half: left = mid else: # если ps > half, уходим левее # если ps < half, это странно, т.к. ps не может вдруг уменьшиться, Fenwick — неубывающая prefix if ps > half: right = mid - 1 else: # ps < half — тут теоретически не случится, # потому что prefix не убывает, а уже было =half в i_min # но на всякий случай: right = mid - 1 # Теперь left — самый большой индекс, где prefix_sum(left)=half idx_ans = left # Получим реальный x real_x = xs_unique[idx_ans - 1] # т.к. compress — 1-based # По условию a = real_x (т.к. мы хотим prefix(a) = half) # Но у нас неотрицательность a формально не ограничивает, # а x >= 1, так что это точно >= 0. Выводим real_x. out.append(real_x) # ------------------------------ # Печатаем результаты # ------------------------------ print("\n".join(map(str, out)))
Чтение событий:
events
. Для команд или вместе с . Для — без координат.xs_all
для последующей координатной компрессии.Координатная компрессия:
xs_unique
.Fenwick Tree (Бинарный индексный массив, БИТ):
update(i, delta)
меняет счётчик в позиции на .prefix_sum(i)
даёт сумму со всех позиций .Учёт боевых единиц:
active_points[(x,y)]
, чтобы знать, сколько юнитов в точке (на случай множественных добавлений) и корректно обрабатывать удаление.A x y
увеличиваем счётчик и делаем fenw.update(compress[x], +1)
, общий ++.D x y
уменьшаем, делаем fenw.update(compress[x], -1)
, --.Q
анализируем текущее .Логика ответа на Q
:
i_min
с .[i_min..n]
), чтобы найти максимальный idx_ans
, где .real_x = xs_unique[idx_ans - 1]
.real_x
.Сложность:
A
или D
обновляет Fenwick за .Q
делает 1–2 Fenwick-поиска + один двоичный поиск . Итого на запрос.Таким образом, при запросах «Q» программа быстро ищет в БИТ индекс, соответствующий ровно половине боевых единиц по префиксной сумме, и среди возможных индексов берёт самый правый (максимальный), что эквивалентно «самому правому ». Если подходящего нет, либо решений бесконечно много (нет юнитов), выводит .
реши задачу на питоне
n
коров Фермера Джона играют в карточную игру! У Фермера Джона есть колода из n⋅m
карт, пронумерованных от 0
до n⋅m−1
. Он раздает m
карт каждой из своих n
коров.
Фермер Джон хочет, чтобы игра была честной, поэтому каждая корова может сыграть только 1
карту за раунд. Он решает определить порядок ходов, который задается перестановкой∗
p
длины n
, так что корова с номером pi
будет i
-й коровой, которая положит карту наверх центральной стопки в раунде.
Другими словами, в каждом раунде происходят следующие события:
Корова с номером p1
кладет любую карту из своей колоды наверх центральной стопки.
Корова с номером p2
кладет любую карту из своей колоды наверх центральной стопки.
...
Корова с номером pn
кладет любую карту из своей колоды наверх центральной стопки.
Есть одна загвоздка. Изначально в центральной стопке находится карта с номером −1
. Чтобы положить карту, номер карты должен быть больше номера карты на верхней части центральной стопки. Затем вновь положенная карта становится верхней картой центральной стопки. Если корова не может положить ни одной карты из своей колоды, игра считается проигранной.
Фермер Джон задается вопросом: существует ли p
, такое что все его коровы смогут опустошить свою колоду после игры во все m
раундов? Если да, выведите любое допустимое p
. В противном случае выведите −1
.
∗
Перестановка длины n
содержит каждое целое число от 1
до n
ровно один раз
Входные данные
Первая строка содержит целое число t
(1≤t≤400
) — количество наборов входных данных.
Первая строка каждого набора содержит два целых числа n
и m
(1≤n⋅m≤2000
) — количество коров и количество карт, которые получает каждая корова.
Следующие n
строк содержат по m
целых чисел каждая — карты, полученные каждой коровой. Гарантируется, что все указанные числа (по всем n
строкам) различны и находятся в диапазоне от 0
до n⋅m−1
, включительно.
Гарантируется, что сумма n⋅m
по всем наборам входных данных не превышает 2000
.
Выходные данные
Для каждого набора входных данных выведите следующее на новой строке:
Если p
существует, выведите n
целых числа, разделенных пробелами: p1,p2,…,pn
.
В противном случае выведите −1
.
Ниже представлено решение на Python с подробными комментариями. Оно использует ключевой факт: все карт нужно выложить в возрастающем порядке, а порядок выкладывания определяется перестановкой коров, повторяемой раз. Тогда оказывается, что эта задача сводится к простому проверочному условию на «разбиение» отсортированных карт по остаткам по модулю .
У нас есть коров, каждая получила ровно уникальных карт, при этом все карты — это числа от 0 до .
В каждой «полной» последовательности из ходов (по одному ходу для каждой коровы, итого раундов, каждый раунд содержит ходов), номера выложенных карт обязаны строго возрастать (начиная с на верхушке изначально).
В итоге итоговая последовательность выложенных карт (от самого первого до последнего хода) есть некоторая строго возрастающая перестановка всех чисел . Единственный способ выложить все карты без нарушения строгой возрастающей последовательности — это просто идти от самого маленького (0) к самому большому () в естественном порядке.
Следовательно, единственно возможный общий порядок выложенных карт (если игра удаётся) — это по возрастанию.
Но при этом распределение «какую карту кладёт какая корова и в какой ход» навязано нашей перестановкой .
Итого получаем условие:
cowOfCard[j]
, то есть корова, владеющая числом .Таким образом, для каждого остатка , все такие, что , должны принадлежать одной и той же корове (иначе не получится всем этим ходам «назначить» единственную корову).
Следовательно, алгоритм такой:
Сложность решения: суммарно , так что такой алгоритм будет работать достаточно быстро даже при тестах.
pythonimport sys input_data = sys.stdin.read().strip().split() t = int(input_data[0]) ptr = 1 def solve_one_test(n, m, cards): """ n коров, m карт у каждой (всего n*m карт). cards[i] - список из m карт коровы i. Вернём либо список p длины n (0-based индексы коров), либо None, если решения нет. """ total = n*m # Создадим массив cowOfCard размера n*m: cowOfCard[x] = i, если карту x имеет корова i. cowOfCard = [-1]*(total) for i in range(n): for c in cards[i]: cowOfCard[c] = i # Для r = 0..n-1 соберём набор индексов [r, r+n, r+2n, ..., r+(m-1)*n]. # Проверим, что у всех карта "принадлежит" одной корове. Если да, запишем эту корову. # Если нет, return None. subset_owner = [-1]*n # subset_owner[r] = корова, которой принадлежат все карты в группе r for r in range(n): first_cow = cowOfCard[r] ok = True for k in range(1, m): if cowOfCard[r + k*n] != first_cow: ok = False break if not ok: return None subset_owner[r] = first_cow # Теперь subset_owner - это массив длины n, где subset_owner[r] = c (0-based корова). # Нам надо проверить, что все c различны (т.к. одна корова не может занимать 2 позиции в перестановке). used = [False]*n for r in range(n): c = subset_owner[r] if used[c]: # уже была та же корова => нет решения return None used[c] = True # Если дошли сюда, значит мы смогли назначить # p[r] = subset_owner[r], и это перестановка по коровам (0-based). return subset_owner out = [] for _ in range(t): n = int(input_data[ptr]); ptr+=1 m = int(input_data[ptr]); ptr+=1 # Считываем n строк по m карт cards = [] for i in range(n): row = list(map(int, input_data[ptr:ptr+m])) ptr += m cards.append(row) ans = solve_one_test(n, m, cards) if ans is None: out.append("-1") else: # ans - это 0-based permutation p # Нужно вывести 1-based res = [str(x+1) for x in ans] out.append(" ".join(res)) print("\n".join(out))
cowOfCard
: поскольку каждая карта встречается ровно у одной коровы, мы просто заполняем массив размером , где cowOfCard[x] = i
означает, что карта находится у коровы .subset_owner
должен оказаться перестановкой коров . Если там обнаруживается повтор коровы, вывод .Если где-то проверка провалилась, выводим .
Таким образом, мы либо находим подходящую перестановку (не обязательно единственную, но достаточно вывести любую), либо выводим , если игра не может быть сыграна без «застреваний».
напиши цитатный план по отрывку
Тот уже входил в комнаты. Он вошел с таким видом, как будто изо всей силы сдерживался, чтобы не прыснуть как-нибудь со смеху. За ним, с совершенно опрокинутою и свирепою физиономией, красный как пион, долговязо и неловко, вошел стыдящийся Разумихин. Лицо его и вся фигура действительно были в эту минуту смешны и оправдывали смех Раскольникова. Раскольников, еще не представленный, поклонился стоявшему посреди комнаты и вопросительно глядевшему на них хозяину, протянул и пожал ему руку всё еще с видимым чрезвычайным усилием подавить свою веселость и по крайней мере хоть два-три слова выговорить, чтоб отрекомендовать себя. Но едва только он успел принять серьезный вид и что-то пробормотать — вдруг, как бы невольно, взглянул опять на Разумихина и тут уже не мог выдержать: подавленный смех прорвался тем неудержимее, чем сильнее до сих пор сдерживался. Необыкновенная свирепость, с которою принимал этот «задушевный» смех Разумихин, придавала всей этой сцене вид самой искренней веселости и, главное, натуральности. Разумихин, как нарочно, еще помог делу.
— Фу, черт! — заревел он, махнув рукой, и как раз ударил ее об маленький круглый столик, на котором стоял допитый стакан чаю. Всё полетело и зазвенело.
— Да зачем же стулья-то ломать, господа, казне ведь убыток! — весело закричал Порфирий Петрович.
Сцена представлялась таким образом: Раскольников досмеивался, забыв свою руку в руке хозяина, но, зная мерку, выжидал мгновения поскорее и натуральнее кончить. Разумихин, сконфуженный окончательно падением столика и разбившимся стаканом, мрачно поглядел на осколки, плюнул и круто повернул к окну, где и стал спиной к публике, с страшно нахмуренным лицом, смотря в окно и ничего не видя. Порфирий Петрович смеялся и желал смеяться, но очевидно было, что ему надо объяснений. В углу на стуле сидел Заметов, привставший при входе гостей и стоявший в ожидании, раздвинув в улыбку рот, но с недоумением и даже как будто с недоверчивостью смотря на всю сцену, а на Раскольникова даже с каким-то замешательством. Неожиданное присутствие Заметова неприятно поразило Раскольникова.
«Это еще надо сообразить!» — подумал он.
— Извините, пожалуйста, — начал он, усиленно законфузившись, — Раскольников...
— Помилуйте, очень приятно-с, да и приятно вы так вошли... Что ж, он и здороваться уж не хочет? — кивнул Порфирий Петрович на Разумихина.
— Ей-богу, не знаю, чего он на меня взбесился. Я сказал ему только дорогой, что он на Ромео похож, и.. и доказал, и больше ничего, кажется, не было.
— Свинья! — отозвался, не оборачиваясь, Разумихин.
— Значит, очень серьезные причины имел, чтобы за одно словечко так рассердиться, — рассмеялся Порфирий.
— Ну, ты! следователь!.. Ну, да черт с вами со всеми! — отрезал Разумихин и вдруг, рассмеявшись сам, с повеселевшим лицом, как ни в чем не бывало, подошел к Порфирию Петровичу.
— Шабаш! Все дураки; к делу: вот приятель, Родион Романыч Раскольников, во-первых, наслышан и познакомиться пожелал, а во-вторых, дельце малое до тебя имеет. Ба! Заметов! Ты здесь каким образом? Да разве вы знакомы? Давно ль сошлись?
«Это что еще!» — тревожно подумал Раскольников.
Заметов как будто законфузился, но не очень.
— Вчера у тебя же познакомились, — сказал он развязно.
— Значит, от убытка бог избавил: на прошлой неделе ужасно просил меня, чтобы как-нибудь тебе, Порфирий, отрекомендоваться, а вы и без меня снюхались... Где у тебя табак?
Порфирий Петрович был по-домашнему, в халате, в весьма чистом белье и в стоптанных туфлях. Это был человек лет тридцати пяти, росту пониже среднего, полный и даже с брюшком, выбритый, без усов и без бакенбард, с плотно выстриженными волосами на большой круглой голове, как-то особенно выпукло закругленной на затылке. Пухлое, круглое и немного курносое лицо его было цвета больного, темно-желтого, но довольно бодрое и даже насмешливое. Оно было бы даже и добродушное, если бы не мешало выражение глаз, с каким-то жидким водянистым блеском, прикрытых почти белыми, моргающими, точно подмигивая кому, ресницами. Взгляд этих глаз как-то странно не гармонировал со всею фигурой, имевшею в себе даже что-то бабье, и придавал ей нечто гораздо более серьезное, чем с первого взгляда можно было от нее ожидать.
Порфирий Петрович, как только услышал, что гость имеет до него «дельце», тотчас же попросил его сесть на диван, сам уселся на другом конце и уставился в гостя, в немедленном ожидании изложения дела, с тем усиленным и уж слишком серьезным вниманием, которое даже тяготит и смущает с первого раза, особенно по незнакомству, и особенно если то, что вы излагаете, по собственному вашему мнению, далеко не в пропорции с таким необыкновенно важным, оказываемым вам вниманием. Но Раскольников в коротких и связных словах, ясно и точно изъяснил свое дело и собой остался доволен так, что даже успел довольно хорошо осмотреть Порфирия. Порфирий Петрович тоже ни разу не свел с него глаз во всё время. Разумихин, поместившись напротив, за тем же столом, горячо и нетерпеливо следил за изложением дела, поминутно переводя глаза с того на другого и обратно, что уже выходило немного из мерки.
«Дурак!» — ругнул про себя Раскольников.
— Вам следует подать объявление в полицию, — с самым деловым видом отвечал Порфирий, — о том-с, что, известившись о таком-то происшествии, то есть об этом убийстве, вы просите, в свою очередь, уведомить следователя, которому поручено дело, что такие-то вещи принадлежат вам и что вы желаете их выкупить... или там... да вам, впрочем, напишут.
— То-то и дело, что я, в настоящую минуту, — как можно больше постарался законфузиться Раскольников, — не совсем при деньгах... и даже такой мелочи не могу... я, вот видите ли, желал бы теперь только заявить, что эти вещи мои, но что когда будут деньги...
— Это всё равно-с, — ответил Порфирий Петрович, холодно принимая разъяснение о финансах, — а впрочем, можно вам и прямо, если захотите, написать ко мне, в том же смысле, что вот, известясь о том-то и объявляя о таких-то моих вещах, прошу...
— Это ведь на простой бумаге? — поспешил перебить Раскольников, опять интересуясь финансовой частью дела.
— О, на самой простейшей-с! — и вдруг Порфирий Петрович как-то явно насмешливо посмотрел на него, прищурившись и как бы ему подмигнув. Впрочем, это, может быть, только так показалось Раскольникову, потому что продолжалось одно мгновение. По крайней мере, что-то такое было. Раскольников побожился бы, что он ему подмигнул, черт знает для чего.
«Знает!» — промелькнуло в нем как молния.
— Извините, что такими пустяками беспокоил, — продолжал он, несколько сбившись, — вещи мои стоят всего пять рублей, но они мне особенно дороги, как память тех, от кого достались, и, признаюсь, я, как узнал, очень испугался...
— То-то ты так вспорхнулся вчера, когда я Зосимову сболтнул, что Порфирий закладчиков опрашивает! — ввернул Разумихин, с видимым намерением.
Это уже было невыносимо. Раскольников не вытерпел и злобно сверкнул на него загоревшимися гневом черными своими глазами. Тотчас же и опомнился.
— Ты, брат, кажется, надо мной подсмеиваешься? — обратился он к нему, с ловко выделанным раздражением. — Я согласен, что, может быть, уже слишком забочусь об этакой дряни, на твои глаза; но нельзя же считать меня за это ни эгоистом, ни жадным, и, на мои глаза, эти две ничтожные вещицы могут быть вовсе не дрянь. Я тебе уже говорил сейчас, что эти серебряные часы, которым грош цена, единственная вещь, что после отца осталась. Надо мной смейся, но ко мне мать приехала, — повернулся он вдруг к Порфирию, — и если б она узнала, — отвернулся он опять поскорей к Разумихину, стараясь особенно, чтобы задрожал голос, — что эти часы пропали, то, клянусь, она была бы в отчаянии! Женщины!
— Да вовсе же нет! Я вовсе не в том смысле! Я совершенно напротив! — кричал огорченный Разумихин.
«Хорошо ли? Натурально ли? Не преувеличил ли? — трепетал про себя Раскольников. — Зачем сказал: „женщины“?»
— А к вам матушка приехала? — осведомился для чего-то Порфирий Петрович.
— Да.
— Когда же это-с?
— Вчера вечером.
Порфирий помолчал, как бы соображая.
— Вещи ваши ни в каком случае и не могли пропасть, — спокойно и холодно продолжал он. — Ведь я уже давно вас здесь поджидаю.
И как ни в чем не бывало, он заботливо стал подставлять пепельницу Разумихину, беспощадно сорившему на ковер папироской. Раскольников вздрогнул, но Порфирий как будто и не глядел, всё еще озабоченный папироской Разумихина.
— Что-о? Поджидал! Да ты разве знал, что и он там закладывал? — крикнул Разумихин.
Порфирий Петрович прямо обратился к Раскольникову:
— Ваши обе вещи, кольцо и часы, были у ней под одну бумажку завернуты, и на бумажке ваше имя карандашом четко обозначено, равно как и число месяца, когда она их от вас получила...
— Как это вы так заметливы?.. — неловко усмехнулся было Раскольников, особенно стараясь смотреть ему прямо в глаза; но не смог утерпеть и вдруг прибавил:— Я потому так заметил сейчас, что, вероятно, очень много было закладчиков... так что вам трудно было бы их всех помнить... А вы, напротив, так отчетливо всех их помните, и... и...
«Глупо! Слабо! Зачем я это прибавил!»
— А почти все закладчики теперь уж известны, так что вы только одни и не изволили пожаловать, — ответил Порфирий с чуть приметным оттенком насмешливости.
— Я не совсем был здоров.
— И об этом слышал-с. Слышал даже, что уж очень были чем-то расстроены. Вы и теперь как будто бледны?
— Совсем не бледен... напротив, совсем здоров! — грубо и злобно отрезал Раскольников, вдруг переменяя тон. Злоба в нем накипала, и он не мог подавить ее. «А в злобе-то и проговорюсь! — промелькнуло в нем опять. — А зачем они меня мучают!..»
— Не совсем здоров! — подхватил Разумихин. — Эвона сморозил! До вчерашнего дня чуть не без памяти бредил... Ну, веришь, Порфирий, сам едва на ногах, а чуть только мы, я да Зосимов, вчера отвернулись — оделся и удрал потихоньку и куролесил где-то чуть не до полночи, и это в совершеннейшем, я тебе скажу, бреду, можешь ты это представить! Замечательнейший случай!
— И неужели в совершеннейшем бреду? Скажите пожалуйста! — с каким-то бабьим жестом покачал головою Порфирий.
— Э, вздор! Не верьте! А впрочем, ведь вы и без того не верите! — слишком уж со зла сорвалось у Раскольникова. Но Порфирий Петрович как будто не расслышал этих странных слов.
— Да как же мог ты выйти, коли не в бреду? — разгорячился вдруг Разумихин. — Зачем вышел? Для чего?.. И почему именно тайком? Ну был ли в тебе тогда здравый смысл? Теперь, когда вся опасность прошла, я уж прямо тебе говорю!
— Надоели они мне очень вчера, — обратился вдруг Раскольников к Порфирию с нахально-вызывающею усмешкой, — я и убежал от них квартиру нанять, чтоб они меня не сыскали, и денег кучу с собой захватил. Вон господин Заметов видел деньги-то. А что, господин Заметов, умен я был вчера али в бреду, разрешите-ка спор?
Он бы, кажется, так и задушил в эту минуту Заметова. Слишком уж взгляд его и молчание ему не нравились.
— По-моему, вы говорили весьма разумно-с и даже хитро-с, только раздражительны были уж слишком, — сухо заявил Заметов.
— А сегодня сказывал мне Никодим Фомич, — ввернул Порфирий Петрович, — что встретил вас вчера, уж очень поздно, в квартире одного, раздавленного лошадьми, чиновника...
— Ну вот хоть бы этот чиновник! — подхватил Разумихин, — ну, не сумасшедший ли был ты у чиновника? Последние деньги на похороны вдове отдал! Ну, захотел помочь — дай пятнадцать, дай двадцать, ну да хоть три целковых себе оставь, а то все двадцать пять так и отвалил!
— А может, я где-нибудь клад нашел, а ты не знаешь? Вот я вчера и расщедрился... Вон господин Заметов знает, что я клад нашел!.. Вы извините, пожалуйста, — обратился он со вздрагивающими губами к Порфирию, — что мы вас пустяшным таким перебором полчаса беспокоим. Надоели ведь, а?
— Помилуйте-с, напротив, на-а-против! Если бы вы знали, как вы меня интересуете! Любопытно и смотреть, и слушать... и я, признаюсь, так рад, что вы изволили, наконец, пожаловать...
— Да дай хоть чаю-то! Горло пересохло! — вскричал Разумихин.
— Прекрасная идея! Может, и все компанию сделают. А не хочешь ли... посущественнее, перед чаем-то?
— Убирайся!
Порфирий Петрович вышел приказать чаю.
Мысли крутились как вихрь в голове Раскольникова. Он был ужасно раздражен.
«Главное, даже и не скрываются, и церемониться не хотят! А по какому случаю, коль меня совсем не знаешь, говорил ты обо мне с Никодимом Фомичом? Стало быть, уж и скрывать не хотят, что следят за мной, как стая собак! Так откровенно в рожу и плюют! — дрожал он от бешенства. — Ну, бейте прямо, а не играйте, как кошка с мышью. Это ведь невежливо, Порфирий Петрович, ведь я еще, может быть, не позволю-с!.. Встану, да и брякну всем в рожу всю правду; и увидите, как я вас презираю!.. — Он с трудом перевел дыхание. — А что, если мне так только кажется? Что, если это мираж, и я во всем ошибаюсь, по неопытности злюсь, подлой роли моей не выдерживаю? Может быть, это всё без намерения? Все слова их обыкновенные, но что-то в них есть... Всё это всегда можно сказать, но что-то есть. Почему он сказал прямо „у ней“? Почему Заметов прибавил, что я хитро говорил? Почему они говорят таким тоном? Да... тон... Разумихин тут же сидел, почему ж ему ничего не кажется? Этому невинному болвану никогда ничего не кажется! Опять лихорадка!.. Подмигнул мне давеча Порфирий аль нет? Верно, вздор; для чего бы подмигивать? Нервы, что ль, хотят мои раздражить али дразнят меня? Или всё мираж, или знают!.. Даже Заметов дерзок... Дерзок ли Заметов? Заметов передумал за ночь. Я и предчувствовал, что передумает! Он здесь как свой, а сам в первый раз. Порфирий его за гостя не считает, к нему задом сидит. Снюхались! Непременно из-за меня снюхались! Непременно до нас обо мне говорили!.. Знают ли про квартиру-то? Поскорей бы уж!.. Когда я сказал, что квартиру нанять вчера убежал, он пропустил, не поднял... А это я ловко про квартиру ввернул: потом пригодится!.. В бреду, дескать!.. Ха-ха-ха! Он про весь вечер вчерашний знает! Про приезд матери не знал!.. А ведьма и число прописала карандашом!.. Врете, не дамся! Ведь это еще не факты, это только мираж! Нет, вы давайте-ка фактов! И квартира не факт, а бред; я знаю, что им говорить... Знают ли про квартиру-то? Не уйду, не узнав! Зачем я пришел? А вот что я злюсь теперь, так это, пожалуй, и факт! Фу, как я раздражителен! А может, и хорошо; болезненная роль... Он меня ощупывает. Сбивать будет. Зачем я пришел?»
Всё это, как молния, пронеслось в его голове.
Порфирий Петрович мигом воротился. Он вдруг как-то повеселел.
— У меня, брат, со вчерашнего твоего голова... Да и весь я как-то развинтился, — начал он совсем другим тоном, смеясь, к Разумихину.
— А что, интересно было? Я ведь вас вчера на самом интересном пункте бросил? Кто победил?
— Да никто, разумеется. На вековечные вопросы съехали, на воздусех парили.
— Вообрази, Родя, на что вчера съехали: есть или нет преступление? Говорил, что до чертиков доврались!
— Что ж удивительного? Обыкновенный социальный вопрос, — рассеянно ответил Раскольников.
— Вопрос был не так формулирован, — заметил Порфирий.
— Не совсем так, это правда, — тотчас же согласился Разумихин, торопясь и разгорячаясь по обыкновению. — Видишь, Родион: слушай и скажи свое мнение. Я хочу. Я из кожи лез вчера с ними и тебя поджидал; я и им про тебя говорил, что придешь... Началось с воззрения социалистов. Известно воззрение: преступление есть протест против ненормальности социального устройства — и только, и ничего больше, и никаких причин больше не допускается, — и ничего!..
— Вот и соврал! — крикнул Порфирий Петрович. Он видимо оживлялся и поминутно смеялся, смотря на Разумихина, чем еще более поджигал его.
— Н-ничего не допускается! — с жаром перебил Разумихин, — не вру!.. Я тебе книжки ихние покажу: всё у них потому, что «среда заела», — и ничего больше! Любимая фраза! Отсюда прямо, что если общество устроить нормально, то разом и все преступления исчезнут, так как не для чего будет протестовать, и все в один миг станут праведными. Натура не берется в расчет, натура изгоняется, натуры не полагается! У них не человечество, развившись историческим, живым путем до конца, само собою обратится наконец в нормальное общество, а, напротив, социальная система, выйдя из какой-нибудь математической головы, тотчас же и устроит всё человечество и в один миг сделает его праведным и безгрешным, раньше всякого живого процесса, без всякого исторического и живого пути! Оттого-то они так инстинктивно и не любят историю: «безобразия одни в ней да глупости» — и всё одною только глупостью объясняется! Оттого так и не любят живого процесса жизни: не надо живой души! Живая душа жизни потребует, живая душа не послушается механики, живая душа подозрительна, живая душа ретроградна! А тут хоть и мертвечинкой припахивает, из каучука сделать можно, — зато не живая, зато без воли, зато рабская, не взбунтуется! И выходит в результате, что всё на одну только кладку кирпичиков да на расположение коридоров и комнат в фаланстере свели! Фаланстера-то и готова, да натура-то у вас для фаланстеры еще не готова, жизни хочет, жизненного процесса еще не завершила, рано на кладбище! С одной логикой нельзя через натуру перескочить! Логика предугадает три случая, а их миллион! Отрезать весь миллион и всё на один вопрос о комфорте свести! Самое легкое разрешение задачи! Соблазнительно ясно, и думать не надо! Главное — думать не надо! Вся жизненная тайна на двух печатных листках умещается!
— Ведь вот прорвался, барабанит! За руки держать надо, — смеялся Порфирий. — Вообразите, — обернулся он к Раскольникову, — вот так же вчера вечером, в одной комнате, в шесть голосов, да еще пуншем напоил предварительно, — можете себе представить? Нет, брат, ты врешь: «среда» многое в преступлении значит; это я тебе подтвержу.
— И сам знаю, что много, да ты вот что скажи: сорокалетний бесчестит десятилетнюю девочку, — среда, что ль, его на это понудила?
— А что ж, оно в строгом смысле, пожалуй, что и среда, — с удивительною важностью заметил Порфирий, — преступление над девочкой очень и очень даже можно «средой» объяснить.
Разумихин чуть в бешенство не пришел.
— Ну, да хочешь я тебе сейчас выведу, — заревел он, — что у тебя белые ресницы единственно оттого только, что в Иване Великом тридцать пять сажен высоты, и выведу ясно, точно, прогрессивно и даже с либеральным оттенком? Берусь! Ну, хочешь пари!
— Принимаю! Послушаем, пожалуйста, как он выведет!
— Да ведь всё притворяется, черт! — вскричал Разумихин, вскочил и махнул рукой. — Ну стоит ли с тобой говорить! Ведь он это всё нарочно, ты еще не знаешь его, Родион! И вчера их сторону принял, только чтобы всех одурачить. И что ж он говорил вчера, господи! А они-то ему обрадовались!.. Ведь он по две недели таким образом выдерживает. Прошлого года уверил нас для чего-то, что в монахи идет: два месяца стоял на своем! Недавно вздумал уверять, что женится, что всё уж готово к венцу Платье даже новое сшил. Мы уж стали его поздравлять. Ни невесты, ничего не бывало: всё мираж!
— А вот соврал! Я платье сшил прежде. Мне по поводу нового платья и пришло в голову вас всех поднадуть.
— В самом деле вы такой притворщик? — спросил небрежно Раскольников.
— А вы думали, нет? Подождите, я и вас проведу — ха-ха-ха! Нет, видите ли-с, я вам всю правду скажу. По поводу всех этих вопросов, преступлений, среды, девочек мне вспомнилась теперь, — а впрочем, и всегда интересовала меня, — одна ваша статейка: «О преступлении».. или как там у вас, забыл название, не помню. Два месяца назад имел удовольствие в «Периодической речи» прочесть.
— Моя статья? В «Периодической речи»? — с удивлением спросил Раскольников, — я действительно написал, полгода назад, когда из университета вышел, по поводу одной книги, одну статью, но я снес ее тогда в газету «Еженедельная речь», а не в «Периодическую».
— А попала в «Периодическую».
— Да ведь «Еженедельная речь» перестала существовать, потому тогда и не напечатали...
— Это правда-с; но, переставая существовать, «Еженедельная речь» соединилась с «Периодическою речью», а потому и статейка ваша, два месяца назад, явилась в «Периодической речи». А вы не знали?
Раскольников действительно ничего не знал.
— Помилуйте, да вы деньги можете с них спросить за статью! Какой, однако ж, у вас характер! Живете так уединенно, что таких вещей, до вас прямо касающихся, не ведаете. Это ведь факт-с.
— Браво, Родька! И я тоже не знал! — вскричал Разумихин. — Сегодня же в читальню забегу и нумер спрошу! Два месяца назад? Которого числа? Всё равно разыщу! Вот штука-то! И не скажет!
— А вы почему узнали, что статья моя? Она буквой подписана.
— А случайно, и то на днях. Через редактора; я знаком... Весьма заинтересовался.
— Я рассматривал, помнится, психологическое состояние преступника в продолжение всего хода преступления.
— Да-с, и настаиваете, что акт исполнения преступления сопровождается всегда болезнию. Очень, очень оригинально, но... меня, собственно, не эта часть вашей статейки заинтересовала, а некоторая мысль, пропущенная в конце статьи, но которую вы, к сожалению, проводите только намеком, неясно... Одним словом, если припомните, проводится некоторый намек на то, что существуют на свете будто бы некоторые такие лица, которые могут... то есть не то что могут, а полное право имеют совершать всякие бесчинства и преступления, и что для них будто бы и закон не писан.
Раскольников усмехнулся усиленному и умышленному искажению своей идеи.
— Как? Что такое? Право на преступление? Но ведь не потому, что «заела среда»? — с каким-то даже испугом осведомился Разумихин.
— Нет, нет, не совсем потому, — ответил Порфирий. — Всё дело в том, что в ихней статье все люди как-то разделяются на «обыкновенных» и «необыкновенных». Обыкновенные должны жить в послушании и не имеют права переступать закона, потому что они, видите ли, обыкновенные. А необыкновенные имеют право делать всякие преступления и всячески преступать закон, собственно потому, что они необыкновенные. Так у вас, кажется, если только не ошибаюсь?
— Да как же это? Быть не может, чтобы так! — в недоумении бормотал Разумихин.
Раскольников усмехнулся опять. Он разом понял, в чем дело и на что его хотят натолкнуть; он помнил свою статью. Он решился принять вызов.
— Это не совсем так у меня, — начал он просто и скромно. — Впрочем, признаюсь, вы почти верно ее изложили, даже, если хотите, и совершенно верно... (Ему точно приятно было согласиться, что совершенно верно). Разница единственно в том, что я вовсе не настаиваю, чтобы необыкновенные люди непременно должны и обязаны были творить всегда всякие бесчинства, как вы говорите. Мне кажется даже, что такую статью и в печать бы не пропустили. Я просто-запросто намекнул, что «необыкновенный» человек имеет право... то есть не официальное право, а сам имеет право разрешить своей совести перешагнуть... через иные препятствия, и единственно в том только случае, если исполнение его идеи (иногда спасительной, может быть, для всего человечества) того потребует. Вы изволите говорить, что статья моя неясна; я готов ее вам разъяснить, по возможности. Я, может быть, не ошибусь, предполагая, что вам, кажется, того и хочется; извольте-с. По-моему, если бы Кеплеровы и Ньютоновы открытия вследствие каких-нибудь комбинаций никоим образом не могли бы стать известными людям иначе как с пожертвованием жизни одного, десяти, ста и так далее человек, мешавших бы этому открытию или ставших бы на пути как препятствие, то Ньютон имел бы право, и даже был бы обязан... устранить этих десять или сто человек, чтобы сделать известными свои открытия всему человечеству. Из этого, впрочем, вовсе не следует, чтобы Ньютон имел право убивать кого вздумается, встречных и поперечных, или воровать каждый день на базаре. Далее, помнится мне, я развиваю в моей статье, что все... ну, например, хоть законодатели и установители человечества, начиная с древнейших, продолжая Ликургами, Солонами, Магометами, Наполеонами и так далее, все до единого были преступники, уже тем одним, что, давая новый закон, тем самым нарушали древний, свято чтимый обществом и от отцов перешедший, и, уж конечно, не останавливались и перед кровью, если только кровь (иногда совсем невинная и доблестно пролитая за древний закон) могла им помочь. Замечательно даже, что большая часть этих благодетелей и установителей человечества были особенно страшные кровопроливцы. Одним словом, я вывожу, что и все, не то что великие, но и чуть-чуть из колеи выходящие люди, то есть чуть-чуть даже способные сказать что-нибудь новенькое, должны, по природе своей, быть непременно преступниками, — более или менее, разумеется. Иначе трудно им выйти из колеи, а оставаться в колее они, конечно, не могут согласиться, опять-таки по природе своей, а по-моему, так даже и обязаны не соглашаться. Одним словом, вы видите, что до сих пор тут нет ничего особенно нового. Это тысячу раз было напечатано и прочитано. Что же касается до моего деления людей на обыкновенных и необыкновенных, то я согласен, что оно несколько произвольно, но ведь я же на точных цифрах и не настаиваю. Я только в главную мысль мою верю. Она именно состоит в том, что люди, по закону природы, разделяются вообще на два разряда: на низший (обыкновенных), то есть, так сказать, на материал, служащий единственно для зарождения себе подобных, и собственно на людей, то есть имеющих дар или талант сказать в среде своей новое слово. Подразделения тут, разумеется, бесконечные, но отличительные черты обоих разрядов довольно резкие: первый разряд, то есть материал, говоря вообще, люди по натуре своей консервативные, чинные, живут в послушании и любят быть послушными. По-моему, они и обязаны быть послушными, потому что это их назначение, и тут решительно нет ничего для них унизительного. Второй разряд, все преступают закон, разрушители или склонны к тому, судя по способностям. Преступления этих людей, разумеется, относительны и многоразличны; большею частию они требуют, в весьма разнообразных заявлениях, разрушения настоящего во имя лучшего. Но если ему надо, для своей идеи, перешагнуть хотя бы и через труп, через кровь, то он внутри себя, по совести, может, по-моему, дать себе разрешение перешагнуть через кровь, — смотря, впрочем, по идее и по размерам ее, — это заметьте. В этом только смысле я и говорю в моей статье об их праве на преступление. (Вы припомните, у нас ведь с юридического вопроса началось). Впрочем, тревожиться много нечего: масса никогда почти не признает за ними этого права, казнит их и вешает (более или менее) и тем, совершенно справедливо, исполняет консервативное свое назначение, с тем, однако ж, что в следующих поколениях эта же масса ставит казненных на пьедестал и им поклоняется (более или менее). Первый разряд всегда — господин настоящего, второй разряд — господин будущего. Первые сохраняют мир и приумножают его численно; вторые двигают мир и ведут его к цели. И те, и другие имеют совершенно одинаковое право существовать. Одним словом, у меня все равносильное право имеют, и — vive la guerre éternelle, 1 —до Нового Иерусалима, разумеется!
— Так вы все-таки верите же в Новый Иерусалим?
— Верую, — твердо отвечал Раскольников; говоря это и в продолжение всей длинной тирады своей, он смотрел в землю, выбрав себе точку на ковре.
— И-и-и в бога веруете? Извините, что так любопытствую.
— Верую, — повторил Раскольников, поднимая глаза на Порфирия.
— И-и в воскресение Лазаря веруете?
— Ве-верую. Зачем вам всё это?
— Буквально веруете?
— Буквально.
— Вот как-с... так полюбопытствовал. Извините-с. Но позвольте, — обращаюсь к давешнему, — ведь их не всегда же казнят; иные напротив...
— Торжествуют при жизни? О да, иные достигают и при жизни, и тогда...
— Сами начинают казнить?
— Если надо и, знаете, даже большею частию. Вообще замечание ваше остроумно.
— Благодарю-с. Но вот что скажите: чем же бы отличить этих необыкновенных-то от обыкновенных? При рождении, что ль, знаки такие есть? Я в том смысле, что тут надо бы поболее точности, так сказать, более наружной определенности: извините во мне естественное беспокойство практического и благонамеренного человека, но нельзя ли тут одежду, например, особую завести, носить что-нибудь, клеймы там, что ли, какие?.. Потому, согласитесь, если произойдет путаница и один из одного разряда вообразит, что он принадлежит к другому разряду, и начнет «устранять все препятствия», как вы весьма счастливо выразились, так ведь тут...
— О, это весьма часто бывает! Это замечание ваше еще даже остроумнее давешнего..
— Благодарю-с..
— Не стоит-с; но примите в соображение, что ошибка возможна ведь только со стороны первого разряда, то есть «обыкновенных» людей (как я, может быть очень неудачно, их назвал). Несмотря на врожденную склонность их к послушанию, по некоторой игривости природы, в которой не отказано даже и корове, весьма многие из них любят воображать себя передовыми людьми, «разрушителями» и лезть в «новое слово», и это совершенно искренно-с. Действительно же новых они в то же время весьма часто не замечают и даже презирают, как отсталых и унизительно думающих людей. Но, по-моему, тут не может быть значительной опасности, и вам, право, нечего беспокоиться, потому что они никогда далеко не шагают. За увлечение, конечно, их можно иногда бы посечь, чтобы напомнить им свое место, но не более; тут и исполнителя даже не надо: они сами себя посекут, потому что очень благонравны; иные друг дружке эту услугу оказывают, а другие сами себя собственноручно... Покаяния разные публичные при сем на себя налагают, — выходит красиво и назидательно, одним словом, вам беспокоиться нечего... Такой закон есть.
— Ну, по крайней мере с этой стороны, вы меня хоть несколько успокоили; но вот ведь опять беда-с: скажите, пожалуйста, много ли таких людей, которые других-то резать право имеют, «необыкновенных-то» этих? Я, конечно, готов преклониться, но ведь согласитесь, жутко-с, если уж очень-то много их будет, а?
— О, не беспокойтесь и в этом, — тем же тоном продолжал Раскольников. — Вообще людей с новою мыслию, даже чуть-чуть только способных сказать хоть что-нибудь новое, необыкновенно мало рождается, даже до странности мало. Ясно только одно, что порядок зарождения людей, всех этих разрядов и подразделений, должно быть, весьма верно и точно определен каким-нибудь законом природы. Закон этот, разумеется, теперь неизвестен, но я верю, что он существует и впоследствии может стать и известным. Огромная масса людей, материал, для того только и существует на свете, чтобы наконец, чрез какое-то усилие, каким-то таинственным до сих пор процессом, посредством какого-нибудь перекрещивания родов и пород, понатужиться и породить наконец на свет, ну хоть из тысячи одного, хотя сколько-нибудь самостоятельного человека. Еще с более широкою самостоятельностию рождается, может быть, из десяти тысяч один (я говорю примерно, наглядно). Еще с более широкою — из ста тысяч один. Гениальные люди — из миллионов, а великие гении, завершители человечества, — может быть, по истечении многих тысячей миллионов людей на земле. Одним словом, в реторту, в которой всё это происходит, я не заглядывал. Но определенный закон непременно есть и должен быть; тут не может быть случая.
— Да что вы оба, шутите, что ль? — вскричал наконец Разумихин. — Морочите вы друг друга иль нет? Сидят и один над другим подшучивают! Ты серьезно, Родя?
Раскольников молча поднял на него свое бледное и почти грустное лицо и ничего не ответил. И странною показалась Разумихину, рядом с этим тихим и грустным лицом, нескрываемая, навязчивая, раздражительная и невежливая язвительность Порфирия.
— Ну, брат, если действительно это серьезно, то... Ты, конечно, прав, говоря, что это не ново и похоже на всё, что мы тысячу раз читали и слышали; но что действительно оригинально во всем этом, — и действительно принадлежит одному тебе, к моему ужасу, — это то, что все-таки кровь по совести разрешаешь, и, извини меня, с таким фанатизмом даже... В этом, стало быть, и главная мысль твоей статьи заключается. Ведь это разрешение крови по совести, это... это, по-моему, страшнее, чем бы официальное разрешение кровь проливать, законное...
— Совершенно справедливо, — страшнее-с, — отозвался Порфирий.
— Нет, ты как-нибудь да увлекся! Тут ошибка. Я прочту... Ты увлекся! Ты не можешь так думать... Прочту.
— В статье всего этого нет, там только намеки, — проговорил Раскольников.
— Так-с, так-с, — не сиделось Порфирию, — мне почти стало ясно теперь, как вы на преступление изволите смотреть-с, но... уж извините меня за мою назойливость (беспокою уж очень вас, самому совестно!) — видите ли-с: успокоили вы меня давеча очень-с насчет ошибочных-то случаев смешения обоих разрядов, но... меня всё тут практические разные случаи опять беспокоят! Ну как иной какой-нибудь муж, али юноша, вообразит, что он Ликург али Магомет... — будущий, разумеется, — да и давай устранять к тому все препятствия... Предстоит, дескать, далекий поход, а в поход деньги нужны... ну и начнет добывать себе для похода... знаете?
Заметов вдруг фыркнул из своего угла. Раскольников даже глаз на него не поднял.
— Я должен согласиться, — спокойно отвечал он, — что такие случаи действительно должны быть. Глупенькие и тщеславные особенно на эту удочку попадаются; молодежь в особенности.
— Вот видите-с. Ну так как же-с?
— Да и так же, — усмехнулся Раскольников, — не я в этом виноват. Так есть и будет всегда. Вот он (он кивнул на Разумихина) говорил сейчас, что я кровь разрешаю. Так что же? Общество ведь слишком обеспечено ссылками, тюрьмами, судебными следователями, каторгами, — чего же беспокоиться? И ищите вора!..
— Ну, а коль сыщем?
— Туда ему и дорога.
— Вы-таки логичны. Ну-с, а насчет его совести-то?
— Да какое вам до нее дело?
— Да так уж, по гуманности-с.
— У кого есть она, тот страдай, коль сознает ошибку. Это и наказание ему, — опричь каторги.
— Ну а действительно-то гениальные, — нахмурясь, спросил Разумихин, — вот те-то, которым резать-то право дано, те так уж и должны не страдать совсем, даже за кровь пролитую?
— Зачем тут слово: должны? Тут нет ни позволения, ни запрещения. Пусть страдает, если жаль жертву... Страдание и боль всегда обязательны для широкого сознания и глубокого сердца. Истинно великие люди, мне кажется, должны ощущать на свете великую грусть, — прибавил он вдруг задумчиво, даже не в тон разговора.
Он поднял глаза, вдумчиво посмотрел на всех, улыбнулся и взял фуражку. Он был слишком спокоен сравнительно с тем, как вошел давеча, и чувствовал это. Все встали.
— Ну-с, браните меня или нет, сердитесь иль нет, а я не могу утерпеть, — заключил опять Порфирий Петрович, — позвольте еще вопросик один (очень уж я вас беспокою-с!), одну только маленькую идейку хотел пропустить, единственно только чтобы не забыть-с...
— Хорошо, скажите вашу идейку, — серьезный и бледный стоял перед ним в ожидании Раскольников.
— Ведь вот-с... право, не знаю, как бы удачнее выразиться... идейка-то уж слишком игривенькая... психологическая-с... Ведь вот-с, когда вы вашу статейку-то сочиняли, — ведь уж быть того не может, хе-хе! чтобы вы сами себя не считали, ну хоть на капельку, — тоже человеком «необыкновенным» и говорящим новое слово, — в вашем то есть смысле-с... Ведь так-с?
— Очень может быть, — презрительно ответил Раскольников.
Разумихин сделал движение.
— А коль так-с, то неужели вы бы сами решились — ну там ввиду житейских каких-нибудь неудач и стеснений или для споспешествования как-нибудь всему человечеству— перешагнуть через препятствие-то?.. Ну, например, убить и ограбить?..
И он как-то вдруг опять подмигнул ему левым глазом и рассмеялся неслышно, — точь-в-точь как давеча.
— Если б я и перешагнул, то уж, конечно, бы вам не сказал, — с вызывающим, надменным презрением ответил Раскольников.
— Нет-с, это ведь я так только интересуюсь, собственно, для уразумения вашей статьи, в литературном только одном отношении-с...
«Фу, как это явно и нагло!» — с отвращением подумал Раскольников.
— Позвольте вам заметить, — отвечал он сухо, — что Магометом иль Наполеоном я себя не считаю... ни кем бы то ни было из подобных лиц, следственно, и не могу, не быв ими, дать вам удовлетворительного объяснения о том, как бы я поступил.
— Ну, полноте, кто ж у нас на Руси себя Наполеоном теперь не считает? — с страшною фамильярностию произнес вдруг Порфирий. Даже в интонации его голоса было на этот раз нечто уж особенно ясное.
— Уж не Наполеон ли какой будущий и нашу Алену Ивановну на прошлой неделе топором укокошил? — брякнул вдруг из угла Заметов.
Раскольников молчал и пристально, твердо смотрел на Порфирия. Разумихин мрачно нахмурился. Ему уж и прежде стало как будто что-то казаться. Он гневно посмотрел кругом. Прошла минута мрачного молчания. Раскольников повернулся уходить.
— Вы уж уходите! — ласково проговорил Порфирий, чрезвычайно любезно протягивая руку. — Очень, очень рад знакомству. А насчет вашей просьбы не имейте и сомнения. Так-таки и напишите, как я вам говорил. Да лучше всего зайдите ко мне туда сами... как-нибудь на днях... да хоть завтра. Я буду там часов этак в одиннадцать, наверно. Всё и устроим... поговорим... Вы же, как один из последних, там бывших, может, что-нибудь и сказать бы нам могли... — прибавил он с добродушнейшим видом.
— Вы хотите меня официально допрашивать, со всею обстановкой? — резко спросил Раскольников.
— Зачем же-с? Покамест это вовсе не требуется. Вы не так поняли. Я, видите ли, не упускаю случая и... и со всеми закладчиками уже разговаривал... от иных отбирал показания... а вы, как последний... Да вот, кстати же! — вскрикнул он, чему-то внезапно обрадовавшись, — кстати вспомнил, что ж это я!.. — повернулся он к Разумихину, — вот ведь ты об этом Николашке мне тогда уши промозолил... ну, ведь и сам знаю, сам знаю, — повернулся он к Раскольникову, — что парень чист, да ведь что ж делать, и Митьку вот пришлось обеспокоить.. вот в чем дело-с, вся-то суть-с: проходя тогда по лестнице... позвольте: ведь вы в восьмом часу были-с?
— В восьмом, — отвечал Раскольников, неприятно почувствовав в ту же секунду, что мог бы этого и не говорить.
— Так проходя-то в восьмом часу-с, по лестнице-то, не видали ль хоть вы, во втором-то этаже, в квартире-то отворенной — помните? — двух работников или хоть одного из них? Они красили там, не заметили ли? Это очень, очень важно для них!..
— Красильщиков? Нет, не видал... — медленно и как бы роясь в воспоминаниях отвечал Раскольников, в тот же миг напрягаясь всем существом своим и замирая от муки поскорей бы отгадать, в чем именно ловушка, и не просмотреть бы чего? — Нет, не видал, да и квартиры такой, отпертой, что-то не заметил... а вот в четвертом этаже (он уже вполне овладел ловушкой и торжествовал) — так помню, что чиновник один переезжал из квартиры... напротив Алены Ивановны... помню... это я ясно помню... солдаты диван какой-то выносили и меня к стене прижали... а красильщиков — нет, не помню, чтобы красильщики были... да и квартиры отпертой нигде, кажется, не было. Да; не было...
— Да ты что же! — крикнул вдруг Разумихин, как бы опомнившись и сообразив, — да ведь красильщики мазали в самый день убийства, а ведь он за три дня там был? Ты что спрашиваешь-то?
— Фу! перемешал! — хлопнул себя по лбу Порфирий. — Черт возьми, у меня с этим делом ум за разум заходит! — обратился он, как бы даже извиняясь, к Раскольникову, — нам ведь так бы важно узнать, не видал ли кто их, в восьмом-то часу, в квартире-то, что мне и вообразись сейчас, что вы тоже могли бы сказать... совсем перемешал!
— Так надо быть внимательнее, — угрюмо заметил Разумихин.
Последние слова были сказаны уже в передней. Порфирий Петрович проводил их до самой двери чрезвычайно любезно. Оба вышли мрачные и хмурые на улицу и несколько шагов не говорили ни слова. Раскольников глубоко перевел дыхание...
Ниже приведён цитатный план по приведённому фрагменту. Он разбит на тематические эпизоды, каждый из которых кратко пересказывает содержание и сопровождается ключевыми фразами из текста (короткие цитаты или ссылки на характерные слова/реплики).
Вход Раскольникова и Разумихина. Первая вспышка смеха
Комическая сцена с упавшим столиком
Наблюдение Порфирия и присутствие Заметова
Раскольников о закладных вещах (приговоры, формальности)
Скрытые намёки Порфирия, нервозность Раскольникова
Философская беседа о «преступлении», «среде» и «особых людях»
Скрытые подтексты: намёки на убийство (Алены Ивановны)
Возрастание напряжения, скрытая «ловушка» Порфирия
Финал сцены. Уход, внутренние терзания Раскольникова
Таковы основные смысловые блоки и цитаты из фрагмента, отражающие сюжетные детали и ключевые мотивы (смех над Разумихиным, игра Порфирия Петровича, нервозность Раскольникова, сквозные темы преступления и «права» на него).
докажи что соня одерживает нравственную победу по тексту:
Раскольников был деятельным и бодрым адвокатом Сони против Лужина, несмотря на то что сам носил столько собственного ужаса и страдания в душе. Но, выстрадав столько утром, он точно рад был случаю переменить свои впечатления, становившиеся невыносимыми, не говоря уже о том, насколько личного и сердечного заключалось в стремлении его заступиться за Соню. Кроме того, у него было в виду и страшно тревожило его, особенно минутами, предстоящее свидание с Соней: он должен был объявить ей, кто убил Лизавету, и предчувствовал себе страшное мучение, и точно отмахивался от него руками. И потому, когда он воскликнул, выходя от Катерины Ивановны: «Ну, что вы скажете теперь, Софья Семеновна?», то, очевидно, находился еще в каком-то внешне возбужденном состоянии бодрости, вызова и недавней победы над Лужиным. Но странно случилось с ним. Когда он дошел до квартиры Капернаумова, то почувствовал в себе внезапное обессиление и страх. В раздумье остановился он перед дверью с странным вопросом: «Надо ли сказывать, кто убил Лизавету?» Вопрос был странный, потому что он вдруг, в то же время, почувствовал, что не только нельзя не сказать, но даже и отдалить эту минуту, хотя на время, невозможно. Он еще не знал, почему невозможно; он только почувствовал это, и это мучительное сознание своего бессилия перед необходимостию почти придавило его. Чтоб уже не рассуждать и не мучиться, он быстро отворил дверь и с порога посмотрел на Соню. Она сидела, облокотясь на столик и закрыв лицо руками, но, увидев Раскольникова, поскорей встала и пошла к нему навстречу, точно ждала его.
— Что бы со мной без вас-то было! — быстро проговорила она, сойдясь с ним среди комнаты. Очевидно, ей только это и хотелось поскорей сказать ему. Затем и ждала.
Раскольников прошел к столу и сел на стул, с которого она только что встала. Она стала перед ним в двух шагах, точь-в-точь как вчера.
— Что, Соня? — сказал он и вдруг почувствовал, что голос его дрожит, — ведь всё дело-то упиралось на «общественное положение и сопричастные тому привычки». Поняли вы давеча это?
Страдание выразилось в лице ее.
— Только не говорите со мной как вчера! — прервала она его. — Пожалуйста, уж не начинайте. И так мучений довольно...
Она поскорей улыбнулась, испугавшись, что, может быть, ему не понравится упрек.
— Я сглупа-то оттудова ушла. Что там теперь? Сейчас было хотела идти, да всё думала, что вот... вы зайдете.
Он рассказал ей, что Амалия Ивановна гонит их с квартиры и что Катерина Ивановна побежала куда-то «правды искать».
— Ах, боже мой! — вскинулась Соня, — пойдемте поскорее...
И она схватила свою мантильку.
— Вечно одно и то же! — вскричал раздражительно Раскольников. — У вас только и в мыслях, что они! Побудьте со мной.
— А... Катерина Ивановна?
— А Катерина Ивановна, уж конечно, вас не минует, зайдет к вам сама, коли уж выбежала из дому, — брюзгливо прибавил он. — Коли вас не застанет, ведь вы же останетесь виноваты...
Соня в мучительной нерешимости присела на стул. Раскольников молчал, глядя в землю и что-то обдумывая.
— Положим, Лужин теперь не захотел, — начал он, не взглядывая на Соню. — Ну а если б он захотел или как-нибудь в расчеты входило, ведь он бы упрятал вас в острог-то, не случись тут меня да Лебезятникова! А?
— Да, — сказала она слабым голосом, — да! — повторила она, рассеянно и в тревоге.
— А ведь я и действительно мог не случиться! А Лебезятников, тот уже совсем случайно подвернулся.
Соня молчала.
— Ну а если б в острог, что тогда? Помните, что я вчера говорил?
Она опять не ответила. Тот переждал.
— А я думал, вы опять закричите: «Ах, не говорите, перестаньте!» — засмеялся Раскольников, но как-то с натугой. — Что ж, опять молчание? — спросил он через минуту. — Ведь надо же о чем-нибудь разговаривать? Вот мне именно интересно было бы узнать, как бы вы разрешили теперь один «вопрос», как говорит Лебезятников. (Он как будто начинал путаться). Нет, в самом деле, я серьезно. Представьте себе, Соня, что вы знали бы все намерения Лужина заранее, знали бы (то есть наверно), что через них погибла бы совсем Катерина Ивановна, да и дети; вы тоже, в придачу (так как вы себя ни за что считаете, так в придачу). Полечка также... потому ей та же дорога. Ну-с; так вот: если бы вдруг все это теперь на ваше решение отдали: тому или тем жить на свете, то есть Лужину ли жить и делать мерзости, или умирать Катерине Ивановне? То как бы вы решили: кому из них умереть? Я вас спрашиваю.
Соня с беспокойством на него посмотрела: ей что-то особенное послышалось в этой нетвердой и к чему-то издалека подходящей речи.
— Я уже предчувствовала, что вы что-нибудь такое спросите, — сказала она, пытливо смотря на него.
— Хорошо, пусть; но, однако, как же бы решить-то?
— Зачем вы спрашиваете, чему быть невозможно? — с отвращением сказала Соня.
— Стало быть, лучше Лужину жить и делать мерзости! Вы и этого решить не осмелились?
— Да ведь я божьего промысла знать не могу... И к чему вы спрашиваете, чего нельзя спрашивать? К чему такие пустые вопросы? Как может случиться, чтоб это от моего решения зависело? И кто меня тут судьей поставил: кому жить, кому не жить?
— Уж как божий промысл замешается, так уж тут ничего не поделаешь, — угрюмо проворчал Раскольников.
— Говорите лучше прямо, чего вам надобно! — вскричала с страданием Соня, — вы опять на что-то наводите... Неужели вы только затем, чтобы мучить, пришли!
Она не выдержала и вдруг горько заплакала. В мрачной тоске смотрел он на нее. Прошло минут пять.
— А ведь ты права, Соня, — тихо проговорил он наконец. Он вдруг переменился; выделанно-нахальный и бессильно-вызывающий тон его исчез. Даже голос вдруг ослабел. — Сам же я тебе сказал вчера, что не прощения приду просить, а почти тем вот и начал, что прощения прошу... Это я про Лужина и промысл для себя говорил... Я это прощения просил, Соня...
Он хотел было улыбнуться, но что-то бессильное и недоконченное сказалось в его бледной улыбке. Он склонил голову и закрыл руками лицо.
И вдруг странное, неожиданное ощущение какой-то едкой ненависти к Соне прошло по его сердцу. Как бы удивясь и испугавшись сам этого ощущения, он вдруг поднял голову и пристально поглядел на нее; но он встретил на себе беспокойный и до муки заботливый взгляд ее; тут была любовь; ненависть его исчезла, как призрак. Это было не то; он принял одно чувство за другое. Это только значило, что та минута пришла.
Опять он закрыл руками лицо и склонил вниз голову. Вдруг он побледнел, встал со стула, посмотрел на Соню и, ничего не выговорив, пересел машинально на ее постель.
Эта минута была ужасно похожа, в его ощущении, на ту, когда он стоял за старухой, уже высвободив из петли топор, и почувствовал, что уже «ни мгновения нельзя было терять более».
— Что с вами? — спросила Соня, ужасно оробевшая.
Он ничего не мог выговорить. Он совсем, совсем не так предполагал объявить и сам не понимал того, что теперь с ним делалось. Она тихо подошла к нему, села на постель подле и ждала, не сводя с него глаз. Сердце ее стучало и замирало. Стало невыносимо: он обернул к ней мертво-бледное лицо свое; губы его бессильно кривились, усиливаясь что-то выговорить. Ужас прошел по сердцу Сони.
— Что с вами? — повторила она, слегка от него отстраняясь.
— Ничего, Соня. Не пугайся... Вздор! Право, если рассудить, — вздор, — бормотал он с видом себя не помнящего человека в бреду. — Зачем только тебя-то я пришел мучить? — прибавил он вдруг, смотря на нее. — Право. Зачем? Я всё задаю себе этот вопрос, Соня...
Он, может быть, и задавал себе этот вопрос четверть часа назад, но теперь проговорил в полном бессилии, едва себя сознавая и ощущая беспрерывную дрожь во всем своем теле.
— Ох, как вы мучаетесь! — с страданием произнесла она, вглядываясь в него.
— Всё вздор!.. Вот что, Соня (он вдруг отчего-то улыбнулся, как-то бледно и бессильно, секунды на две), — помнишь ты, что я вчера хотел тебе сказать?
Соня беспокойно ждала.
— Я сказал, уходя, что, может быть, прощаюсь с тобой навсегда, но что если приду сегодня, то скажу тебе... кто убил Лизавету.
Она вдруг задрожала всем телом.
— Ну так вот, я и пришел сказать.
— Так вы это в самом деле вчера... — с трудом прошептала она, — почему ж вы знаете? — быстро спросила она, как будто вдруг опомнившись.
Соня начала дышать с трудом. Лицо становилось всё бледнее и бледнее.
— Знаю.
Она помолчала с минуту.
— Нашли, что ли, его? — робко спросила она.
— Нет, не нашли.
— Так как же вы про это знаете? — опять чуть слышно спросила она, и опять почти после минутного молчания.
Он обернулся к ней и пристально-пристально посмотрел на нее.
— Угадай, — проговорил он с прежнею искривленною и бессильною улыбкой.
Точно конвульсии пробежали по всему ее телу.
— Да вы... меня... что же вы меня так... пугаете? — проговорила она, улыбаясь как ребенок.
— Стало быть, я с ним приятель большой... коли знаю, — продолжал Раскольников, неотступно продолжая смотреть в ее лицо, точно уже был не в силах отвести глаз, — он Лизавету эту... убить не хотел... Он ее... убил нечаянно... Он старуху убить хотел... когда она была одна... и пришел... А тут вошла Лизавета... Он тут... и ее убил.
Прошла еще ужасная минута. Оба всё глядели друг на друга.
— Так не можешь угадать-то? — спросил он вдруг, с тем ощущением, как бы бросался вниз с колокольни.
— Н-нет, — чуть слышно прошептала Соня.
— Погляди-ка хорошенько.
И как только он сказал это, опять одно прежнее, знакомое ощущение оледенило вдруг его душу: он смотрел на нее и вдруг, в ее лице, как бы увидел лицо Лизаветы. Он ярко запомнил выражение лица Лизаветы, когда он приближался к ней тогда с топором, а она отходила от него к стене, выставив вперед руку, с совершенно детским испугом в лице, точь-в-точь как маленькие дети, когда они вдруг начинают чего-нибудь пугаться, смотрят неподвижно и беспокойно на пугающий их предмет, отстраняются назад и, протягивая вперед ручонку, готовятся заплакать. Почти то же самое случилось теперь и с Соней: так же бессильно, с тем же испугом, смотрела она на него несколько времени и вдруг, выставив вперед левую руку, слегка, чуть-чуть, уперлась ему пальцами в грудь и медленно стала подниматься с кровати, всё более и более от него отстраняясь, и всё неподвижнее становился ее взгляд на него. Ужас ее вдруг сообщился и ему: точно такой же испуг показался и в его лице, точно так же и он стал смотреть на нее, и почти даже с тою же детскою улыбкой.
— Угадала? — прошептал он наконец.
— Господи! — вырвался ужасный вопль из груди ее. Бессильно упала она на постель, лицом в подушки. Но через мгновение быстро приподнялась, быстро придвинулась к нему, схватила его за обе руки и, крепко сжимая их, как в тисках, тонкими своими пальцами, стала опять неподвижно, точно приклеившись, смотреть в его лицо. Этим последним, отчаянным взглядом она хотела высмотреть и уловить хоть какую-нибудь последнюю себе надежду. Но надежды не было; сомнения не оставалось никакого; всё было так! Даже потом, впоследствии, когда она припоминала эту минуту, ей становилось и странно, и чудно: почему именно она так сразу увидела тогда, что нет уже никаких сомнений? Ведь не могла же она сказать, например, что она что-нибудь в этом роде предчувствовала? А между тем, теперь, только что он сказал ей это, ей вдруг и показалось, что и действительно она как будто это самое и предчувствовала.
— Полно, Соня, довольно! Не мучь меня! — страдальчески попросил он.
Он совсем, совсем не так думал открыть ей, но вышло так.
Как бы себя не помня, она вскочила и, ломая руки, дошла до средины комнаты; но быстро воротилась и села опять подле него, почти прикасаясь к нему плечом к плечу. Вдруг, точно пронзенная, она вздрогнула, вскрикнула и бросилась, сама не зная для чего, перед ним на колени.
— Что вы, что вы это над собой сделали! — отчаянно проговорила она и, вскочив с колен, бросилась ему на шею, обняла его и крепко-крепко сжала его руками.
Раскольников отшатнулся и с грустною улыбкой посмотрел на нее:
— Странная какая ты, Соня, — обнимаешь и целуешь, когда я тебе сказал про это. Себя ты не помнишь.
— Нет, нет тебя несчастнее никого теперь в целом свете! — воскликнула она, как в исступлении, не слыхав его замечания, и вдруг заплакала навзрыд, как в истерике.
Давно уже незнакомое ему чувство волной хлынуло в его душу и разом размягчило ее. Он не сопротивлялся ему: две слезы выкатились из его глаз и повисли на ресницах.
— Так не оставишь меня, Соня? — говорил он, чуть не с надеждой смотря на нее.
— Нет, нет; никогда и нигде! — вскрикнула Соня, — за тобой пойду, всюду пойду! О господи!.. Ох, я несчастная!.. И зачем, зачем я тебя прежде не знала! Зачем ты прежде не приходил? О господи!
— Вот и пришел.
— Теперь-то! О, что теперь делать!.. Вместе, вместе! — повторяла она как бы в забытьи и вновь обнимала его, — в каторгу с тобой вместе пойду! — Его как бы вдруг передернуло, прежняя, ненавистная и почти надменная улыбка выдавилась на губах его.
— Я, Соня, еще в каторгу-то, может, и не хочу идти, — сказал он.
Соня быстро на него посмотрела.
После первого, страстного и мучительного сочувствия к несчастному опять страшная идея убийства поразила ее. В переменившемся тоне его слов ей вдруг послышался убийца. Она с изумлением глядела на него. Ей ничего еще не было известно, ни зачем, ни как, ни для чего это было. Теперь все эти вопросы разом вспыхнули в ее сознании. И опять она не поверила: «Он, он убийца! Да разве это возможно?»
— Да что это! Да где это я стою! — проговорила она в глубоком недоумении, как будто еще не придя в себя, — да как вы, вы, такой... могли на это решиться?.. Да что это!
— Ну да, чтоб ограбить. Перестань, Соня! — как-то устало и даже как бы с досадой ответил он.
Соня стояла как бы ошеломленная, но вдруг вскричала:
— Ты был голоден! ты... чтобы матери помочь? Да?
— Нет, Соня, нет, — бормотал он, отвернувшись и свесив голову, — не был я так голоден... я действительно хотел помочь матери, но... и это не совсем верно... не мучь меня, Соня!
Соня всплеснула руками.
— Да неужель, неужель это всё взаправду! Господи, да какая же это правда! Кто же этому может поверить?.. И как же, как же вы сами последнее отдаете, а убили, чтоб ограбить! А!.. — вскрикнула она вдруг, — те деньги, что Катерине Ивановне отдали... те деньги... Господи, да неужели ж и те деньги...
— Нет, Соня, — торопливо прервал он, — эти деньги были не те, успокойся! Эти деньги мне мать прислала, через одного купца, и получил я их больной, в тот же день, как и отдал... Разумихин видел... он же и получал за меня... эти деньги мои, мои собственные, настоящие мои.
Соня слушала его в недоумении и из всех сил старалась что-то сообразить.
— А те деньги... я, впрочем, даже и не знаю, были ли там и деньги-то, — прибавил он тихо и как бы в раздумье, — я снял у ней тогда кошелек с шеи, замшевый... полный, тугой такой кошелек... да я не посмотрел в него; не успел, должно быть... Ну а вещи, какие-то всё запонки да цепочки, — я все эти вещи и кошелек на чужом одном дворе, на В — м проспекте под камень схоронил, на другое же утро. Всё там и теперь лежит.
Соня из всех сил слушала.
— Ну, так зачем же... как же вы сказали: чтоб ограбить, а сами ничего не взяли? — быстро спросила она, хватаясь за соломинку.
— Не знаю... я еще не решил — возьму или не возьму эти деньги, — промолвил он, опять как бы в раздумье, и вдруг, опомнившись, быстро и коротко усмехнулся. — Эх, какую я глупость сейчас сморозил, а?
У Сони промелькнула было мысль: «Не сумасшедший ли?» Но тотчас же она ее оставила: нет, тут другое. Ничего, ничего она тут не понимала!
— Знаешь, Соня, — сказал он вдруг с каким-то вдохновением, — знаешь, что я тебе скажу: если б только я зарезал из того, что голоден был, — продолжал он, упирая в каждое слово и загадочно, но искренно смотря на нее, — то я бы теперь... счастлив был! Знай ты это!
— И что тебе, что тебе в том, — вскричал он через мгновение с каким-то даже отчаянием, — ну что тебе в том, если б я и сознался сейчас, что дурно сделал? Ну что тебе в этом глупом торжестве надо мной? Ах, Соня, для того ли я пришел к тебе теперь!
Соня опять хотела было что-то сказать, но промолчала.
— Потому я и звал с собою тебя вчера, что одна ты у меня и осталась.
— Куда звал? — робко спросила Соня.
— Не воровать и не убивать, не беспокойся, не за этим, — усмехнулся он едко, — мы люди розные... И знаешь, Соня, я ведь только теперь, только сейчас понял: куда тебя звал вчера? А вчера, когда звал, я и сам не понимал куда. За одним и звал, за одним приходил: не оставить меня. Не оставишь, Соня?
Она стиснула ему руку.
— И зачем, зачем я ей сказал, зачем я ей открыл! — в отчаянии воскликнул он через минуту, с бесконечным мучением смотря на нее, — вот ты ждешь от меня объяснений, Соня, сидишь и ждешь, я это вижу; а что я скажу тебе? Ничего ведь ты не поймешь в этом, а только исстрадаешься вся... из-за меня! Ну вот, ты плачешь и опять меня обнимаешь, — ну за что ты меня обнимаешь? За то, что я сам не вынес и на другого пришел свалить: «страдай и ты, мне легче будет!» И можешь ты любить такого подлеца?
— Да разве ты тоже не мучаешься? — вскричала Соня.
Опять то же чувство волной хлынуло в его душу и опять на миг размягчило ее.
— Соня, у меня сердце злое, ты это заметь: этим можно многое объяснить. Я потому и пришел, что зол. Есть такие, которые не пришли бы. А я трус и... подлец! Но... пусть! всё это не то... Говорить теперь надо, а я начать не умею...
Он остановился и задумался.
— Э-эх, люди мы розные! — вскричал он опять, — не пара. И зачем, зачем я пришел! Никогда не прощу себе этого!
— Нет, нет, это хорошо, что пришел! — восклицала Соня, — это лучше, чтоб я знала! Гораздо лучше! Он с болью посмотрел на нее.
— А что и в самом деле! — сказал он, как бы надумавшись, — ведь это ж так и было! Вот что: я хотел Наполеоном сделаться, оттого и убил... Ну, понятно теперь?
— Н-нет, — наивно и робко прошептала Соня, — только... говори, говори! Я пойму, я про себя всё пойму! — упрашивала она его.
— Поймешь? Ну, хорошо, посмотрим!
Он замолчал и долго обдумывал.
— Штука в том: я задал себе один раз такой вопрос: что если бы, например, на моем месте случился Наполеон и не было бы у него, чтобы карьеру начать, ни Тулона, ни Египта, ни перехода через Монблан, а была бы вместо всех этих красивых и монументальных вещей просто-запросто одна какая-нибудь смешная старушонка, легистраторша, которую еще вдобавок надо убить, чтоб из сундука у ней деньги стащить (для карьеры-то, понимаешь?), ну, так решился ли бы он на это, если бы другого выхода не было? Не покоробился ли бы оттого, что это уж слишком не монументально и... и грешно? Ну, так я тебе говорю, что на этом «вопросе» я промучился ужасно долго, так что ужасно стыдно мне стало, когда я наконец догадался (вдруг как-то), что не только его не покоробило бы, но даже и в голову бы ему не пришло, что это не монументально... и даже не понял бы он совсем: чего тут коробиться? И уж если бы только не было ему другой дороги, то задушил бы так, что и пикнуть бы не дал, без всякой задумчивости!.. Ну и я... вышел из задумчивости... задушил... по примеру авторитета... И это точь-в-точь так и было! Тебе смешно? Да, Соня, тут всего смешнее то, что, может, именно оно так и было...
Соне вовсе не было смешно.
— Вы лучше говорите мне прямо... без примеров, — еще робче и чуть слышно попросила она.
Он поворотился к ней, грустно посмотрел на нее и взял ее за руки.
— Ты опять права, Соня. Это всё ведь вздор, почти одна болтовня! Видишь: ты ведь знаешь, что у матери моей почти ничего нет. Сестра получила воспитание, случайно, и осуждена таскаться в гувернантках. Все их надежды были на одного меня. Я учился, но содержать себя в университете не мог и на время принужден был выйти. Если бы даже и так тянулось, то лет через десять, через двенадцать (если б обернулись хорошо обстоятельства) я все-таки мог надеяться стать каким-нибудь учителем или чиновником, с тысячью рублями жалованья... (Он говорил как будто заученное). А к тому времени мать высохла бы от забот и от горя, и мне все-таки не удалось бы успокоить ее, а сестра... ну, с сестрой могло бы еще и хуже случиться!.. Да и что за охота всю жизнь мимо всего проходить и от всего отвертываться, про мать забыть, а сестрину обиду, например, почтительно перенесть? Для чего? Для того ль, чтоб, их схоронив, новых нажить — жену да детей, и тоже потом без гроша и без куска оставить? Ну... ну, вот я и решил, завладев старухиными деньгами, употребить их на мои первые годы, не мучая мать, на обеспечение себя в университете, на первые шаги после университета, — и сделать всё это широко, радикально, так чтоб уж совершенно всю новую карьеру устроить и на новую, независимую дорогу стать... Ну... ну, вот и всё... Ну, разумеется, что я убил старуху, — это я худо сделал... ну, и довольно!
В каком-то бессилии дотащился он до конца рассказа и поник головой.
— Ох, это не то, не то, — в тоске восклицала Соня, — и разве можно так... нет, это не так, не так!
— Сама видишь, что не так!.. А я ведь искренно рассказал, правду!
— Да какая ж это правда! О господи!
— Я ведь только вошь убил, Соня, бесполезную, гадкую, зловредную.
— Это человек-то вошь!
— Да ведь и я знаю, что не вошь, — ответил он, странно смотря на нее. — А впрочем, я вру, Соня, — прибавил он, — давно уже вру... Это всё не то; ты справедливо говоришь. Совсем, совсем, совсем тут другие причины!... Я давно ни с кем не говорил, Соня... Голова у меня теперь очень болит.
Глаза его горели лихорадочным огнем. Он почти начинал бредить; беспокойная улыбка бродила на его губах. Сквозь возбужденное состояние духа уже проглядывало страшное бессилие. Соня поняла, как он мучается. У ней тоже голова начинала кружиться. И странно он так говорил: как будто и понятно что-то, но... «но как же! Как же! О господи!» И она ломала руки в отчаянии.
— Нет, Соня, это не то! — начал он опять, вдруг поднимая голову, как будто внезапный поворот мыслей поразил и вновь возбудил его, — это не то! А лучше.. предположи (да! этак действительно лучше!), предположи, что я самолюбив, завистлив, зол, мерзок, мстителен, ну... и, пожалуй, еще наклонен к сумасшествию. (Уж пусть всё зараз! Про сумасшествие-то говорили прежде, я заметил!) Я вот тебе сказал давеча, что в университете себя содержать не мог. А знаешь ли ты, что я, может, и мог? Мать прислала бы, чтобы внести, что надо, а на сапоги, платье и на хлеб я бы и сам заработал; наверно! Уроки выходили; по полтиннику предлагали. Работает же Разумихин! Да я озлился и не захотел. Именно озлился (это слово хорошее!). Я тогда, как паук, к себе в угол забился. Ты ведь была в моей конуре, видела... А знаешь ли, Соня, что низкие потолки и тесные комнаты душу и ум теснят! О, как ненавидел я эту конуру! А все-таки выходить из нее не хотел. Нарочно не хотел! По суткам не выходил, и работать не хотел, и даже есть не хотел, всё лежал. Принесет Настасья — поем, не принесет — так и день пройдет; нарочно со зла не спрашивал! Ночью огня нет, лежу в темноте, а на свечи не хочу заработать. Надо было учиться, я книги распродал; а на столе у меня, на записках да на тетрадях, на палец и теперь пыли лежит. Я лучше любил лежать и думать. И всё думал... И всё такие у меня были сны, странные, разные сны, нечего говорить какие! Но только тогда начало мне тоже мерещиться, что... Нет, это не так! Я опять не так рассказываю! Видишь, я тогда всё себя спрашивал: зачем я так глуп, что если другие глупы и коли я знаю уж наверно, что они глупы, то сам не хочу быть умнее? Потом я узнал, Соня, что если ждать, пока все станут умными, то слишком уж долго будет... Потом я еще узнал, что никогда этого и не будет, что не переменятся люди, и не переделать их никому, и труда не стоит тратить! Да, это так! Это их закон... Закон, Соня! Это так!.. И я теперь знаю, Соня, что кто крепок и силен умом и духом, тот над ними и властелин! Кто много посмеет, тот у них и прав. Кто на большее может плюнуть, тот у них и законодатель, а кто больше всех может посметь, тот и всех правее! Так доселе велось и так всегда будет! Только слепой не разглядит!
Раскольников, говоря это, хоть и смотрел на Соню, но уж не заботился более: поймет она или нет. Лихорадка вполне охватила его. Он был в каком-то мрачном восторге. (Действительно, он слишком долго ни с кем не говорил!) Соня поняла, что этот мрачный катехизис стал его верой и законом.
— Я догадался тогда, Соня, — продолжал он восторженно, — что власть дается только тому, кто посмеет наклониться и взять ее. Тут одно только, одно: стоит только посметь! У меня тогда одна мысль выдумалась, в первый раз в жизни, которую никто и никогда еще до меня не выдумывал! Никто! Мне вдруг ясно, как солнце, представилось, что как же это ни единый до сих пор не посмел и не смеет, проходя мимо всей этой нелепости, взять просто-запросто всё за хвост и стряхнуть к черту! Я... я захотел осмелиться и убил... я только осмелиться захотел, Соня, вот вся причина!
— О, молчите, молчите! — вскрикнула Соня, всплеснув руками. — От бога вы отошли, и вас бог поразил, дьяволу предал!..
— Кстати, Соня, это когда я в темноте-то лежал и мне всё представлялось, это ведь дьявол смущал меня? а?
— Молчите! Не смейтесь, богохульник, ничего, ничего-то вы не понимаете! О господи! Ничего-то, ничего-то он не поймет!
— Молчи, Соня, я совсем не смеюсь, я ведь и сам знаю, что меня черт тащил. Молчи, Соня, молчи! — повторил он мрачно и настойчиво. — Я всё знаю. Всё это я уже передумал и перешептал себе, когда лежал тогда в темноте... Всё это я сам с собой переспорил, до последней малейшей черты, и всё знаю, всё! И так надоела, так надоела мне тогда вся эта болтовня! Я всё хотел забыть и вновь начать, Соня, и перестать болтать! И неужели ты думаешь, что я как дурак пошел, очертя голову? Я пошел как умник, и это-то меня и сгубило! И неужель ты думаешь, что я не знал, например, хоть того, что если уж начал я себя спрашивать и допрашивать: имею ль я право власть иметь? — то, стало быть, не имею права власть иметь. Или что если задаю вопрос: вошь ли человек? — то, стало быть, уж не вошь человек для меня, а вошь для того, кому этого и в голову не заходит и кто прямо без вопросов идет... Уж если я столько дней промучился: пошел ли бы Наполеон или нет? — так ведь уж ясно чувствовал, что я не Наполеон... Всю, всю муку всей этой болтовни я выдержал, Соня, и всю ее с плеч стряхнуть пожелал: я захотел, Соня, убить без казуистики, убить для себя, для себя одного! Я лгать не хотел в этом даже себе! Не для того, чтобы матери помочь, я убил — вздор! Не для того я убил, чтобы, получив средства и власть, сделаться благодетелем человечества. Вздор! Я просто убил; для себя убил, для себя одного: а там стал ли бы я чьим-нибудь благодетелем или всю жизнь, как паук, ловил бы всех в паутину и из всех живые соки высасывал, мне, в ту минуту, всё равно должно было быть!.. И не деньги, главное, нужны мне были, Соня, когда я убил; не столько деньги нужны были, как другое... Я это всё теперь знаю... Пойми меня: может быть, тою же дорогой идя, я уже никогда более не повторил бы убийства. Мне другое надо было узнать, другое толкало меня под руки: мне надо было узнать тогда, и поскорей узнать, вошь ли я, как все, или человек? Смогу ли я переступить или не смогу! Осмелюсь ли нагнуться и взять или нет? Тварь ли я дрожащая или право имею...
— Убивать? Убивать-то право имеете? — всплеснула руками Соня.
— Э-эх, Соня! — вскрикнул он раздражительно, хотел было что-то ей возразить, но презрительно замолчал. — Не прерывай меня, Соня! Я хотел тебе только одно доказать: что черт-то меня тогда потащил, а уж после того мне объяснил, что не имел я права туда ходить, потому что я такая же точно вошь, как и все! Насмеялся он надо мной, вот я к тебе и пришел теперь! Принимай гостя! Если б я не вошь был, то пришел ли бы я к тебе? Слушай: когда я тогда к старухе ходил, я только попробовать сходил... Так и знай!
— И убили! Убили!
— Да ведь как убил-то? Разве так убивают? Разве так идут убивать, как я тогда шел! Я тебе когда-нибудь расскажу, как я шел... Разве я старушонку убил? Я себя убил, а не старушонку! Тут так-таки разом и ухлопал себя, навеки!.. А старушонку эту черт убил, а не я... Довольно, довольно, Соня, довольно! Оставь меня, — вскричал он вдруг в судорожной тоске, — оставь меня!
Он облокотился на колена и, как в клещах, стиснул себе ладонями голову.
— Экое страдание! — вырвался мучительный вопль у Сони.
— Ну, что теперь делать, говори! — спросил он, вдруг подняв голову и с безобразно искаженным от отчаяния лицом смотря на нее.
— Что делать! — воскликнула она, вдруг вскочив с места, и глаза ее, доселе полные слез, вдруг засверкали. — Встань! (Она схватила его за плечо; он приподнялся, смотря на нее почти в изумлении). Поди сейчас, сию же минуту, стань на перекрестке, поклонись, поцелуй сначала землю, которую ты осквернил, а потом поклонись всему свету, на все четыре стороны, и скажи всем, вслух: «Я убил!» Тогда бог опять тебе жизни пошлет. Пойдешь? Пойдешь? — спрашивала она его, вся дрожа, точно в припадке, схватив его за обе руки, крепко стиснув их в своих руках и смотря на него огневым взглядом.
Он изумился и был даже поражен ее внезапным восторгом.
— Это ты про каторгу, что ли, Соня? Донести, что ль, на себя надо? — спросил он мрачно.
— Страдание принять и искупить себя им, вот что надо.
— Нет! Не пойду я к ним, Соня.
— А жить-то, жить-то как будешь? Жить-то с чем будешь? — восклицала Соня. — Разве это теперь возможно? Ну как ты с матерью будешь говорить? (О, с ними-то, с ними-то что теперь будет!) Да что я! Ведь ты уж бросил мать и сестру. Вот ведь уж бросил же, бросил. О господи! — вскрикнула она, — ведь он уже это всё знает сам! Ну как же, как же без человека-то прожить! Что с тобой теперь будет!
— Не будь ребенком, Соня, — тихо проговорил он. — В чем я виноват перед ними? Зачем пойду? Что им скажу? Всё это один только призрак... Они сами миллионами людей изводят, да еще за добродетель почитают. Плуты и подлецы они, Соня!.. Не пойду. И что я скажу: что убил, а денег взять не посмел, под камень спрятал? — прибавил он с едкою усмешкой. — Так ведь они же надо мной сами смеяться будут, скажут: дурак, что не взял. Трус и дурак! Ничего, ничего не поймут они, Соня, и недостойны понять. Зачем я пойду? Не пойду. Не будь ребенком, Соня...
— Замучаешься, замучаешься, — повторяла она, в отчаянной мольбе простирая к нему руки.
— Я, может, на себя еще наклепал, — мрачно заметил он, как бы в задумчивости, — может, я еще человек, а не вошь и поторопился себя осудить... Я еще поборюсь.
Надменная усмешка выдавливалась на губах его.
— Этакую-то муку нести! Да ведь целую жизнь, целую жизнь!..
— Привыкну... — проговорил он угрюмо и вдумчиво. — Слушай, — начал он через минуту, — полно плакать, пора о деле: я пришел тебе сказать, что меня теперь ищут, ловят...
— Ах! — вскрикнула Соня испуганно.
— Ну, что же ты вскрикнула! Сама желаешь, чтоб я в каторгу пошел, а теперь испугалась? Только вот что: я им не дамся. Я еще с ними поборюсь, и ничего не сделают. Нет у них настоящих улик. Вчера я был в большой опасности и думал, что уж погиб; сегодня же дело поправилось. Все улики их о двух концах, то есть их обвинения я в свою же пользу могу обратить, понимаешь? и обращу; потому я теперь научился... Но в острог меня посадят наверно. Если бы не один случай, то, может, и сегодня бы посадили, наверно, даже, может, еще и посадят сегодня... Только это ничего, Соня: посижу, да и выпустят... потому нет у них ни одного настоящего доказательства и не будет, слово даю. А с тем, что у них есть, нельзя упечь человека. Ну, довольно... Я только, чтобы ты знала... С сестрой и с матерью я постараюсь как-нибудь так сделать, чтоб их разуверить и не испугать... Сестра теперь, впрочем, кажется, обеспечена... стало быть, и мать... Ну, вот и всё. Будь, впрочем, осторожна. Будешь ко мне в острог ходить, когда я буду сидеть?
— О, буду! Буду!
Оба сидели рядом, грустные и убитые, как бы после бури выброшенные на пустой берег одни. Он смотрел на Соню и чувствовал, как много на нем было ее любви, и странно, ему стало вдруг тяжело и больно, что его так любят. Да, это было странное и ужасное ощущение! Идя к Соне, он чувствовал, что в ней вся его надежда и весь исход; он думал сложить хоть часть своих мук, и вдруг, теперь, когда всё сердце ее обратилось к нему, он вдруг почувствовал и сознал, что он стал беспримерно несчастнее, чем был прежде.
— Соня, — сказал он, — уж лучше не ходи ко мне, когда я буду в остроге сидеть.
Соня не ответила, она плакала. Прошло несколько минут.
— Есть на тебе крест? — вдруг неожиданно спросила она, точно вдруг вспомнила.
Он сначала не понял вопроса.
— Нет, ведь нет? На, возьми вот этот, кипарисный. У меня другой остался, медный, Лизаветин. Мы с Лизаветой крестами поменялись, она мне свой крест, а я ей свой образок дала. Я теперь Лизаветин стану носить, а этот тебе. Возьми... ведь мой! Ведь мой! — упрашивала она. — Вместе ведь страдать пойдем, вместе и крест понесем!..
— Дай! — сказал Раскольников. Ему не хотелось ее огорчить. Но он тотчас же отдернул протянутую за крестом руку.
— Не теперь, Соня. Лучше потом, — прибавил он, чтоб ее успокоить.
— Да, да, лучше, лучше, — подхватила она с увлечением, — как пойдешь на страдание, тогда и наденешь. Придешь ко мне, я надену на тебя, помолимся и пойдем.
В это мгновение кто-то три раза стукнул в дверь.
— Софья Семеновна, можно к вам? — послышался чей-то очень знакомый вежливый голос.
Соня бросилась к дверям в испуге. Белокурая физиономия господина Лебезятникова заглянула в комнату.
Ниже приведён пример того, как можно показать (или «доказать») моральную победу Сони на основании данного отрывка. Мы исходим из текста и тезисно разбираем, где и почему Соня оказывается нравственно сильнее Раскольникова и «одерживает верх» в духовно-нравственном смысле.
«…Он совсем, совсем не так предполагал объявить и сам не понимал того, что теперь с ним делалось…»
Промежуточный вывод: Уже в самом его визите видна сила Сони: преступник жаждет встречи с ней, как с человеком, способным понять и простить.
«…она …бросилась ему на шею, обняла его и крепко-крепко сжала его руками…
— „Нет, нет тебя несчастнее никого теперь…“ …И вдруг заплакала навзрыд…»
Промежуточный вывод: Именно такой ответ — всепрощение, жалость, сострадание — становится для Раскольникова чем-то невыносимо сильным. Он видит, что Соня духовно выше его самого.
«…Встань сейчас, сию же минуту, стань на перекрестке… и скажи всем, вслух: „Я убил!“ Тогда бог опять тебе жизни пошлёт…»
Промежуточный вывод: Это призыв к покаянию — и есть вершина её морального авторитета. Соня делает то, чего не могут достичь ни полицейские, ни светские судьи — она обращается к душе Раскольникова.
«…он …сознал, что он стал беспримерно несчастнее, чем был прежде…»
Промежуточный вывод: Соня своей святостью и жалостью доводит его до ломки внутренней гордости — это и есть моральная победа, поскольку теперь он вынужден (даже против воли) почувствовать собственное ничтожество перед лицом любви и веры.
«…Пойдешь? Пойдешь? — спрашивала она его… „Страдание принять и искупить себя им, вот что надо“»
Окончательный вывод: Соня одерживает нравственную победу тем, что:
Таким образом, в нравственном измерении именно Соня оказывается выше: её жертвенная любовь перевешивает все рассуждения Раскольникова о «праве» и «Наполеонах». И хотя он изначально хотел «осмелиться» на убийство, но истинное мужество проявляет Соня, осмеливаясь любить преступника и вести его к раскаянию.
ответь текстом раскаивается ли раскольников в своем преступление по отрывку:
В тот же день, но уже вечером, часу в седьмом, Раскольников подходил к квартире матери и сестры своей — к той самой квартире в доме Бакалеева, где устроил их Разумихин. Вход на лестницу был с улицы. Раскольников подходил, всё еще сдерживая шаг и как бы колеблясь: войти или нет? Но он бы не воротился ни за что; решение его было принято. «К тому же всё равно, они еще ничего не знают, — думал он, — а меня уже привыкли считать за чудака...» Костюм его был ужасен: всё грязное, пробывшее всю ночь под дождем, изорванное, истрепанное. Лицо его было почти обезображено от усталости, непогоды, физического утомления и чуть не суточной борьбы с самим собою. Всю эту ночь провел он один, бог знает где. Но, по крайней мере, он решился.
Он постучал в дверь; ему отперла мать. Дунечки дома не было. Даже и служанки на ту пору не случилось. Пульхерия Александровна сначала онемела от радостного изумления; потом схватила его за руку и потащила в комнату.
— Ну вот и ты! — начала она, запинаясь от радости. — Не сердись на меня, Родя, что я тебя так глупо встречаю, со слезами: это я смеюсь, а не плачу. Ты думаешь, я плачу? Нет, это я радуюсь, а уж у меня глупая привычка такая: слезы текут. Это у меня со смерти твоего отца, от всего плачу. Садись, голубчик, устал, должно быть, вижу. Ах, как ты испачкался.
— Я под дождем вчера был, мамаша... — начал было Раскольников.
— Да нет же, нет! — вскинулась Пульхерия Александровна, перебивая его, — ты думал, я тебя так сейчас и допрашивать начну, по бабьей прежней привычке, не тревожься. Я ведь понимаю, всё понимаю, теперь я уж выучилась по-здешнему и, право, сама вижу, что здесь умнее. Я раз навсегда рассудила: где мне понимать твои соображения и требовать у тебя отчетов? У тебя, может быть, и бог знает какие дела и планы в голове, или мысли там какие-нибудь зарождаются; так мне тебя и толкать под руку: об чем, дескать, думаешь? Я вот... Ах господи! Да что же это я толкусь туда и сюда, как угорелая... Я вот, Родя, твою статью в журнале читаю уже в третий раз, мне Дмитрий Прокофьич принес. Так я и ахнула, как увидела: вот дура-то, думаю про себя, вот он чем занимается, вот и разгадка вещей! У него, может, новые мысли в голове, на ту пору; он их обдумывает, я его мучаю и смущаю. Читаю, друг мой, и, конечно, много не понимаю; да оно, впрочем, так и должно быть: где мне?
— Покажите-ка, мамаша.
Раскольников взял газетку и мельком взглянул на свою статью. Как ни противоречило это его положению и состоянию, но он ощутил то странное и язвительно-сладкое чувство, какое испытывает автор, в первый раз видящий себя напечатанным, к тому же и двадцать три года сказались. Это продолжалось одно мгновение. Прочитав несколько строк, он нахмурился, и страшная тоска сжала его сердце. Вся его душевная борьба последних месяцев напомнилась ему разом. С отвращением и досадой отбросил он статью на стол.
— Но только, Родя, как я ни глупа, но все-таки я могу судить, что ты весьма скоро будешь одним из первых людей, если не самым первым в нашем ученом мире. И смели они про тебя думать, что ты помешался. Ха-ха-ха! Ты не знаешь — ведь они это думали! Ах, низкие червяки, да где им понимать, что такое ум! И ведь Дунечка тоже чуть не верила — каково! Покойник отец твой два раза отсылал в журналы — сначала стихи (у меня и тетрадка хранится, я тебе когда-нибудь покажу), а потом уж и целую повесть (я сама выпросила, чтоб он дал мне переписать), и уж как мы молились оба, чтобы приняли, — не приняли! Я, Родя, дней шесть-семь назад убивалась, смотря на твое платье, как ты живешь, что ешь и в чем ходишь. А теперь вижу, что опять-таки глупа была, потому захочешь, всё теперь себе сразу достанешь, умом и талантом. Это ты покамест, значит, не хочешь теперь и гораздо важнейшими делами занимаешься...
— Дуни дома нет, мамаша?
— Нету, Родя. Очень часто ее дома не вижу, оставляет меня одну. Дмитрий Прокофьич, спасибо ему, заходит со мной посидеть и всё об тебе говорит. Любит он тебя и уважает, мой друг. Про сестру же не говорю, чтоб она уж так очень была ко мне непочтительна. Я ведь не жалуюсь. У ней свой характер, у меня свой; у ней свои тайны какие-то завелись; ну у меня тайн от вас нет никаких. Конечно, я твердо уверена, что Дуня слишком умна и, кроме того, и меня и тебя любит... но уж не знаю, к чему всё это приведет. Вот ты меня осчастливил теперь, Родя, что зашел, а она-то вот и прогуляла; придет, я и скажу: а без тебя брат был, а ты где изволила время проводить? Ты меня, Родя, очень-то и не балуй: можно тебе — зайди, нельзя — нечего делать, и так подожду. Ведь я все-таки буду знать, что ты меня любишь, с меня и того довольно. Буду вот твои сочинения читать, буду про тебя слышать ото всех, а нет-нет — и сам зайдешь проведать, чего ж лучше? Ведь вот зашел же теперь, чтоб утешить мать, я ведь вижу...
Тут Пульхерия Александровна вдруг заплакала.
— Опять я! Не гляди на меня, дуру! Ах господи, да что ж я сижу, — вскричала она, срываясь с места, — ведь кофей есть, а я тебя и не потчую! Вот ведь эгоизм-то старушечий что значит. Сейчас, сейчас!
— Маменька, оставьте это, я сейчас пойду. Я не для того пришел. Пожалуйста, выслушайте меня.
Пульхерия Александровна робко подошла к нему.
— Маменька, что бы ни случилось, что бы вы обо мне ни услышали, что бы вам обо мне ни сказали, будете ли вы любить меня так, как теперь? — спросил он вдруг от полноты сердца, как бы не думая о своих словах и не взвешивая их.
— Родя, Родя, что с тобою? Да как же ты об этом спрашивать можешь! Да кто про тебя мне что-нибудь скажет? Да я и не поверю никому, кто бы ко мне ни пришел, просто прогоню.
— Я пришел вас уверить, что я вас всегда любил, и теперь рад, что мы одни, рад даже, что Дунечки нет, — продолжал он с тем же порывом, — я пришел вам сказать прямо, что хоть вы и несчастны будете, но все-таки знайте, что сын ваш любит вас теперь больше себя и что всё, что вы думали про меня, что я жесток и не люблю вас, всё это была неправда. Вас я никогда не перестану любить... Ну и довольно; мне казалось, что так надо сделать и этим начать...
Пульхерия Александровна молча обнимала его, прижимала к своей груди и тихо плакала.
— Что с тобой, Родя, не знаю, — сказала она наконец, — думала я всё это время, что мы просто надоедаем тебе, а теперь вижу по всему, что тебе великое горе готовится, оттого ты и тоскуешь. Давно я уже предвижу это, Родя. Прости меня, что об этом заговорила; всё об этом думаю и по ночам не сплю. Эту ночь и сестра твоя всю напролет в бреду пролежала и всё о тебе вспоминала. Расслушала я что-то, а ничего не поняла. Всё утро как перед казнью ходила, чего-то ждала, предчувствовала и вот дождалась! Родя, Родя, куда же ты? Едешь, что ли, куда-нибудь?
— Еду.
— Так я и думала! Да ведь и я с тобой поехать могу, если тебе надо будет. И Дуня; она тебя любит, она очень любит тебя, и Софья Семеновна, пожалуй, пусть с нами едет, если надо; видишь, я охотно ее вместо дочери даже возьму. Нам Дмитрий Прокофьич поможет вместе собраться... но... куда же ты... едешь?
— Прощайте, маменька.
— Как! Сегодня же! — вскрикнула она, как бы теряя его навеки.
— Мне нельзя, мне пора, мне очень нужно...
— И мне нельзя с тобой?
— Нет, а вы станьте на колени и помолитесь за меня богу. Ваша молитва, может, и дойдет.
— Дай же я перекрещу тебя, благословлю тебя! Вот так, вот так. О боже, что это мы делаем!
Да, он был рад, он был очень рад, что никого не было, что они были наедине с матерью. Как бы за всё это ужасное время разом размягчилось его сердце. Он упал перед нею, он ноги ей целовал, и оба, обнявшись, плакали. И она не удивлялась и не расспрашивала на этот раз. Она уже давно понимала, что с сыном что-то ужасное происходит, а теперь приспела какая-то страшная для него минута.
— Родя, милый мой, первенец ты мой, — говорила она, рыдая, — вот ты теперь такой же, как был маленький, так же приходил ко мне, так же и обнимал и целовал меня; еще когда мы с отцом жили и бедовали, ты утешал нас одним уже тем, что был с нами, а как я похоронила отца, — то сколько раз мы, обнявшись с тобой вот так, как теперь, на могилке его плакали. А что я давно плачу, то это сердце материнское беду предузнало. Я как только в первый раз увидела тебя тогда, вечером, помнишь, как мы только что приехали сюда, то всё по твоему взгляду одному угадала, так сердце у меня тогда и дрогнуло, а сегодня как отворила тебе, взглянула, ну, думаю, видно пришел час роковой. Родя, Родя, ты ведь не сейчас едешь?
— Нет.
— Ты еще придешь?
— Да... приду.
— Родя, не сердись, я и расспрашивать не смею. Знаю, что не смею, но так, два только словечка скажи мне, далеко куда ты едешь?
— Очень далеко.
— Что же там, служба какая, карьера, что ли, тебе?
— Что бог пошлет... помолитесь только за меня...
Раскольников пошел к дверям, но она ухватилась за него и отчаянным взглядом смотрела ему в глаза. Лицо ее исказилось от ужаса.
— Довольно, маменька, — сказал Раскольников, глубоко раскаиваясь, что вздумал прийти.
— Не навек? Ведь еще не навек? Ведь ты придешь, завтра придешь?
— Приду, приду, прощайте.
Он вырвался наконец.
Вечер был свежий, теплый и ясный; погода разгулялась еще с утра. Раскольников шел в свою квартиру; он спешил. Ему хотелось кончить всё до заката солнца. До тех же пор не хотелось бы с кем-нибудь повстречаться. Поднимаясь в свою квартиру, он заметил, что Настасья, оторвавшись от самовара, пристально следит за ним и провожает его глазами. «Уж нет ли кого у меня?» — подумал он. Ему с отвращением померещился Порфирий. Но, дойдя до своей комнаты и отворив ее, он увидел Дунечку. Она сидела одна-одинешенька, в глубоком раздумье и, кажется, давно уже ждала его. Он остановился на пороге. Она привстала с дивана в испуге и выпрямилась пред ним. Ее взгляд, неподвижно устремленный на него, изображал ужас и неутолимую скорбь. И по одному этому взгляду он уже понял сразу, что ей всё известно.
— Что же, мне входить к тебе или уйти? — спросил он недоверчиво.
— Я целый день сидела у Софьи Семеновны; мы ждали тебя обе. Мы думали, что ты непременно туда зайдешь.
Раскольников вошел в комнату и в изнеможении сел на стул.
— Я как-то слаб, Дуня; уж очень устал; а мне бы хотелось хоть в эту-то минуту владеть собою вполне.
Он недоверчиво вскинул на нее глазами.
— Где же ты был всю ночь?
— Не помню хорошо; видишь, сестра, я окончательно хотел решиться и много раз ходил близ Невы; это я помню. Я хотел там и покончить, но... я не решился... — прошептал он, опять недоверчиво взглядывая на Дуню.
— Слава богу! А как мы боялись именно этого, я и Софья Семеновна! Стало быть, ты в жизнь еще веруешь: слава богу, слава богу!
Раскольников горько усмехнулся.
— Я не веровал, а сейчас вместе с матерью, обнявшись, плакали; я не верую, а ее просил за себя молиться. Это бог знает как делается, Дунечка, и я ничего в этом не понимаю.
— Ты у матери был? Ты же ей и сказал? — в ужасе воскликнула Дуня. — Неужели ты решился сказать?
— Нет, не сказал... словами; но она многое поняла. Она слышала ночью, как ты бредила. Я уверен, что она уже половину понимает. Я, может быть, дурно сделал, что заходил. Уж и не знаю, для чего я даже и заходил-то. Я низкий человек, Дуня.
— Низкий человек, а на страданье готов идти! Ведь ты идешь же?
— Иду. Сейчас. Да, чтоб избежать этого стыда, я и хотел утопиться, Дуня, но подумал, уже стоя над водой, что если я считал себя до сей поры сильным, то пусть же я и стыда теперь не убоюсь, — сказал он, забегая наперед. — Это гордость, Дуня?
— Гордость, Родя.
Как будто огонь блеснул в его потухших глазах; ему точно приятно стало, что он еще горд.
— А ты не думаешь, сестра, что я просто струсил воды? — спросил он с безобразною усмешкой, заглядывая в ее лицо.
— О, Родя, полно! — горько воскликнула Дуня.
Минуты две продолжалось молчание. Он сидел потупившись и смотрел в землю; Дунечка стояла на другом конце стола и с мучением смотрела на него. Вдруг он встал:
— Поздно, пора. Я сейчас иду предавать себя. Но я не знаю, для чего я иду предавать себя.
Крупные слезы текли по щекам ее.
— Ты плачешь, сестра, а можешь ты протянуть мне руку?
— И ты сомневался в этом?
Она крепко обняла его.
— Разве ты, идучи на страдание, не смываешь уже вполовину свое преступление? — вскричала она, сжимая его в объятиях и целуя его.
— Преступление? Какое преступление? — вскричал он вдруг, в каком-то внезапном бешенстве, — то, что я убил гадкую, зловредную вошь, старушонку процентщицу, никому не нужную, которую убить сорок грехов простят, которая из бедных сок высасывала, и это-то преступление? Не думаю я о нем и смывать его не думаю. И что мне все тычут со всех сторон: «преступление, преступление!» Только теперь вижу ясно всю нелепость моего малодушия, теперь, как уж решился идти на этот ненужный стыд! Просто от низости и бездарности моей решаюсь, да разве еще из выгоды, как предлагал этот... Порфирий!..
— Брат, брат, что ты это говоришь! Но ведь ты кровь пролил!— в отчаянии вскричала Дуня.
— Которую все проливают, — подхватил он чуть не в исступлении, — которая льется и всегда лилась на свете, как водопад, которую льют, как шампанское, и за которую венчают в Капитолии и называют потом благодетелем человечества. Да ты взгляни только пристальнее и разгляди! Я сам хотел добра людям и сделал бы сотни, тысячи добрых дел вместо одной этой глупости, даже не глупости, а просто неловкости, так как вся эта мысль была вовсе не так глупа, как теперь она кажется, при неудаче... (При неудаче всё кажется глупо!) Этою глупостью я хотел только поставить себя в независимое положение, первый шаг сделать, достичь средств, и там всё бы загладилось неизмеримою, сравнительно, пользой... Но я, я и первого шага не выдержал, потому что я — подлец! Вот в чем всё и дело! И всё-таки вашим взглядом не стану смотреть: если бы мне удалось, то меня бы увенчали, а теперь в капкан!
— Но ведь это не то, совсем не то! Брат, что ты это говоришь!
— А! не та форма, не так эстетически хорошая форма! Ну я решительно не понимаю: почему лупить в людей бомбами, правильною осадой, более почтенная форма? Боязнь эстетики есть первый признак бессилия!.. Никогда, никогда яснее не сознавал я этого, как теперь, и более чем когда-нибудь не понимаю моего преступления! Никогда, никогда не был я сильнее и убежденнее, чем теперь!..
Краска даже ударила в его бледное, изнуренное лицо. Но, проговаривая последнее восклицание, он нечаянно встретился взглядом с глазами Дуни, и столько, столько муки за себя встретил он в этом взгляде, что невольно опомнился. Он почувствовал, что все-таки сделал несчастными этих двух бедных женщин. Все-таки он же причиной...
— Дуня, милая! Если я виновен, прости меня (хоть меня и нельзя простить, если я виновен). Прощай! Не будем спорить! Пора, очень пора. Не ходи за мной, умоляю тебя, мне еще надо зайти... А поди теперь и тотчас же сядь подле матери. Умоляю тебя об этом! Это последняя, самая большая моя просьба к тебе. Не отходи от нее всё время; я оставил ее в тревоге, которую она вряд ли перенесет: она или умрет, или сойдет с ума. Будь же с нею! Разумихин будет при вас; я ему говорил... Не плачь обо мне: я постараюсь быть и мужественным, и честным, всю жизнь, хоть я и убийца. Может быть, ты услышишь когда-нибудь мое имя. Я не осрамлю вас, увидишь; я еще докажу... теперь покамест до свиданья, — поспешил он заключить, опять заметив какое-то странное выражение в глазах Дуни при последних словах и обещаниях его. — Что же ты так плачешь? Не плачь, не плачь; ведь не совсем же расстаемся!.. Ах, да! Постой, забыл!..
Он подошел к столу, взял одну толстую, запыленную книгу, развернул ее и вынул заложенный между листами маленький портретик, акварелью, на слоновой кости. Это был портрет хозяйкиной дочери, его бывшей невесты, умершей в горячке, той самой странной девушки, которая хотела идти в монастырь. С минуту он всматривался в это выразительное и болезненное личико, поцеловал портрет и передал Дунечке.
— Вот с нею я много переговорил и об этом, с нею одной, — произнес он вдумчиво, — ее сердцу я много сообщил из того, что потом так безобразно сбылось. Не беспокойся, — обратился он к Дуне, — она не согласна была, как и ты, и я рад, что ее уж нет. Главное, главное в том, то всё теперь пойдет по-новому, переломится надвое, — вскричал он вдруг, опять возвращаясь к тоске своей, — всё, всё, а приготовлен ли я к тому? Хочу ли я этого сам? Это, говорят, для моего испытания нужно! К чему, к чему все эти бессмысленные испытания? К чему они, лучше ли я буду сознавать тогда, раздавленный муками, идиотством, в старческом бессилии после двадцатилетней каторги, чем теперь сознаю, и к чему мне тогда и жить? Зачем я теперь-то соглашаюсь так жить? О, я знал, что я подлец, когда я сегодня, на рассвете, стоял над Невой!
Оба наконец вышли. Трудно было Дуне, но она любила его! Она пошла, но, отойдя шагов пятьдесят, обернулась еще раз взглянуть на него. Его еще было видно. Но, дойдя до угла, обернулся и он; в последний раз они встретились взглядами; но, заметив, что она на него смотрит, он нетерпеливо и даже с досадой махнул рукой, чтоб она шла, а сам круто повернул за угол.
«Я зол, я это вижу, — думал он про себя, устыдясь чрез минуту своего досадливого жеста рукой Дуне. — Но зачем же они сами меня так любят, если я не стою того! О, если б я был один и никто не любил меня, и сам бы я никого никогда не любил! Не было бы всего этого! А любопытно, неужели в эти будущие пятнадцать — двадцать лет так уже смирится душа моя, что я с благоговением буду хныкать пред людьми, называя себя ко всякому слову разбойником? Да, именно, именно! Для этого-то они и ссылают меня теперь, этого-то им и надобно... Вот они снуют все по улице взад и вперед, и ведь всякий-то из них подлец и разбойник уже по натуре своей; хуже того — идиот! А попробуй обойти меня ссылкой, и все они взбесятся от благородного негодования! О, как я их всех ненавижу!»
Он глубоко задумался о том: «каким же это процессом может так произойти, что он наконец пред всеми ими уже без рассуждений смирится, убеждением смирится! А что ж, почему ж и нет? Конечно, так и должно быть. Разве двадцать лет беспрерывного гнета не добьют окончательно? Вода камень точит. И зачем, зачем же жить после этого, зачем я иду теперь, когда сам знаю, что всё это будет именно так, как по книге, а не иначе!»
Он уже в сотый раз, может быть, задавал себе этот вопрос со вчерашнего вечера, но все-таки шел.
В приведённом отрывке Раскольников стоит на пороге того, чтобы сознаться в совершённом преступлении и «идти на страдание», однако его внутреннее состояние нельзя назвать полным раскаянием в привычном, простом смысле слова. Ниже основные моменты, которые отражают его отношение к преступлению:
Стремление к самообличению, но не к раскаянию
Внутренний конфликт: чувствует свою низость, но не считает убийство грехом
Нелепость и «неудача» вместо покаянного тона
Согласие «идти на каторгу», но по другим причинам
Таким образом, Раскольников в данном отрывке не раскаивается в обычном смысле «осознать грех и сожалеть о нём». Он переживает тяжёлый внутренний конфликт и готов принять наказание, но мотивация сводится к личному нравственному кризису и признанию, что он не сумел «стать Наполеоном». Он понимает, что должен пройти «через страдание», но считает сам поступок лишь «ошибкой» или «нелепостью», а не злом, за которое следует просить прощения.
Можно сказать, что он осознаёт свою слабость и ответственность за страдания близких (особенно матери и сестры), но именно моральное раскаяние перед лицом самого преступления ещё не наступило. Точка, в которой он действительно «примет» свой грех как грех, а не как «неудачную попытку», на данном этапе текста ещё не достигнута.