1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <cstdio>
#include <cstdint>
#include <cinttypes>
#include <vector>
#include <algorithm>

struct ChildReading {
	uint32_t id;
	std::vector<uint32_t> readings;
};

int main(int argc, char const *argv[]) {
	uint32_t readings_count;
	scanf("%" PRIu32, &readings_count);

	uint32_t children_count;
	scanf("%" PRIu32, &children_count);

	std::vector<uint32_t> alinas_readings;
	while (readings_count--) {
		uint32_t temp;
		scanf("%" PRIu32, &temp);
		alinas_readings.push_back(temp);
	}

	std::vector<ChildReading> childrens_readings;
	childrens_readings.reserve(children_count);
	childrens_readings.push_back({1, alinas_readings});

	for (uint32_t i = 2; i <= children_count; ++i) {
		uint32_t changed_pos;
		scanf("%" PRIu32, &changed_pos);

		uint32_t new_temp;
		scanf("%" PRIu32, &new_temp);

		auto readings = childrens_readings[i-1-1].readings;
		readings[changed_pos-1] = new_temp;
		childrens_readings.push_back({i, readings});
	}

	std::stable_sort(
		childrens_readings.begin(),
		childrens_readings.end(),
		[](const ChildReading &a, const ChildReading &b) {
			return a.readings < b.readings;
		}
	);

	for (const auto &cr : childrens_readings) {
		printf("%" PRIu32 " ", cr.id);
	}

	return 0;
}