НОВ  БЪЛГАРСКИ  УНИВЕРСИТЕТ

Департамент Информатика

XVIIІ РЕПУБЛИКАНСКА СТУДЕНТСКА ОЛИМПИАДА ПО ПРОГРАМИРАНЕ

13 - 14 май 2006 г.

 


Задача J. БИРЕНО ПАРТИ

Смарти е програмист, който предпочита да си лежи, отколкото да пие бира, което е второто най-важно нещо в живота му (и чак тогава идва ред на програмирането). Един ден той бил поставен пред следния проблем. На бирено парти домакините били подредили в много дълга редица N бутилки бира от K различни вида. Тъй като бил колекционер на празни бирени бутилки и нямал в колекцията си нито една бутилка от тези K вида, той трябвало да направи нещо, за да си ги занесе в къщи. Но единственият начин да си вземе някакво количество бирени бутилки бил, да избере една непрекъсната подредица от тях и да ги изпие. Тъй като е много мързелив и му е много трудно да отваря бутилките, решил да избере най-късата непрекъсната подредица от бутилки, която съдържа поне по една от всичките K различни вида. Смарти е вече достатъчно пиян (нали е на бирено парти) и не може да си спомни алгоритъма, който решава тази задача. Затова ще трябва да му помогнете, като напишете програма J, която определя позициите в редицата на първата и последната бутилки от най-късата непрекъсната подредица, изпълняваща условието. Ако има няколко такива подредици, програмата трябва да намери тази, която се среща най-рано в редицата.

         Вход

            Програмата трябва да прочете от първия ред на стандартния вход броят T на  ситуациите, които трябва да обработи. Данните за всяка ситуация са в два реда на стандартния вход. На първия са записани числата N и K (1 £ N £10000000, 1 £ K £13000, N.K £ 170000000) разделени с интервал, а на втория – N числа (от 1 до K), разделени с по един интервал.

         Изход

            За всяка ситуация програмата трябва да изведе на стандартния изход две числа – номерата на началната и крайната бутилки в подредицата, която трябва да изпие Смарти.

ПРИМЕР

Вход:

2

5 3

1 3 3 2 1

5 3

1 1 2 2 3

 

Изход:

3 5

2 5