Республиканская олимпиада по информатике, 2015 год, 10-11 класс


Задача A. Контейнеры и отсеки

Вы главный разработчик в компании грузоперевозок Нурлаш и КО inc. Компании требуется, чтобы вы написали новый функционал для сортирующего робота. Робот контролирует $N$ отсеков, последовательно пронумерованных от 1 до $N$, и может выполнять два типа операций: Номер контейнера — целое положительное число не превышающее $10^9$.
Вам даны операции в том порядке в котором их выполнял робот. Требуется определить, для каждого отсека, контейнер с каким номером является последним в нем после выполнения всех операций.

Входные данные

Первая строка входных данных содержит два числа — $N$, $M$ ($1 \leq N, M \leq 10^5$), количество отсеков и количество операций соответственно.
Далее в $M$ строках содержится по три числа $L$, $R$ и $C$ ($1 \leq L \leq R \leq 10^5$, $0 \leq C \leq 10^9$), описание операций. Если $C = 0$, то это операция второго типа, иначе — первого.

Все числа целые и в строках разделены ровно одним пробелом. Также гарантируется, что не будет операций допускающих удаление из пустых отсеков.

Выходные данные

Выведите в единственной строке $N$ чисел, разделенных пробелом. Первое число — номер последнего контейнера в первом отсеке, второе - во втором, и т.д. Если отсек пуст, выведите $0$.

Примеры:

Вход:
5 3
1 5 1
2 4 0
4 5 10
Ответ:
1 0 0 10 10

Оценивание:

Данная задача содержит две подзадачи: Каждая следующая подзадача оценивается только при прохождении всех предыдущих. ( Нурлан Жусупов )
посмотреть в олимпиаде

Комментарий/решение:

пред. Правка 2   0
2023-02-12 22:28:02.0 #

я не уверен что код 100% правильный, тут не проверяют python

показать/скрыть код

  0
2025-09-19 16:18:38.0 #

#include <iostream>

#include <vector>

using namespace std;

int main()

{

int N,M;

cin>>N>>M;

vector<vector<int>> V(N);

for(int a = 0; a < M ; ++a){

int L,R,C;

cin>>L>>R>>C;

L--;

R--;

for(; L <= R ; ++L ){

if(C == 0){

V[L].pop_back();

}

else{

V[L].push_back(C);

}

}

}

for(int i = 0 ; i < N ; ++i){

if(V[i].empty())

{

cout<< 0 << " ";

}

else{

cout<< V[i].back()<< " ";

}

}

return 0;

}