Задача

3/6

std::unique

Теория Нажмите, чтобы прочитать/скрыть

unique - функция, которая за линейное время сжимает все последовательности одинаковых подряд идущих элементов в один.
В качестве аргумента ей передаются границы массива, в пределах которых необходимо применить сжатие.
Возвращается же итератор на новый конец (не включительно) массива. Стоит быть внимательным с элементами, расположенными после нового конца, но до старого, так как они будут иметь неопределенное значение.
Подробнее можете прочитать в документации.

Если вы применяете эту функцию на vector, то удобно делать resize, используя возвращаемый результат (подробнее ниже).

Примеры:
 

	vector  a = { 3, 3, 3, 2, 3, 3, 1, 1, 4, 5, 5 };
	unique(a.begin(), a.end());
	// a = [3, 2, 3, 1, 4, 5, ?, ?, ?, ?, ?]


	// с помощью функции unique удобно делать
	// вспомогательный массив для сжатия координат

	a = { 235, 10, 41, 10, 41, 41, 235, 500, 500 };
	sort(a.begin(), a.end());
	// a = [10, 10, 41, 41, 41, 235, 235, 500, 500]

	a.resize(unique(a.begin(), a.end()) - a.begin());
	// a = [10, 41, 235, 500]
 

Задача

Для этой задачи необходимо ознакомиться с функцией lower_bound.

Сжатием координат массива размера n называют сопоставление его элементов целым числам от 0 до n-1 с сохранением относительного порядка. То есть, чтобы для любых a и b из исходного массива выполнялось следующее: если a = b, то a' = b' и если a < b, то a' < b', при условии, что сжатие координат превращает a в a' и b в b'.

Вам дано q запросов, где для каждого запроса вам дан массив целых чисел размера ni, и вам необходимо произвести его сжатие координат и вывести результат.

Входные данные:
В первой строке дано число q (1 <= q <= 20) - число запросов.
Далее для каждого запроса сперва в отдельной строке дается число ni (1 <= ni <= 5000) - размер массива, затем в следующей строке дается ni целых чисел, по модулю не превышающих 109 - элементы массива.

Выходные данные:
Для каждого запроса в отдельной строке выведите результат сжатия координат данных массивов.

Примеры:
 
Входные данные Выходные данные
2
5
300 -200 100 400 100
3
3 3 3
2 0 1 3 1
0 0 0