Min-Max սքեյլինգ․ արդար մոտեցում, արդար գնահատական
Դուք ղեկավարում եք փոքր ստարտափ, որը KNN ալգորիթմի միջոցով գնորդների համար կոշիկներ է ընտրում։ Յուրաքանչյուր մարդ նկարագրվում է երկու հատկանիշով՝ ոտքի երկարությունը (սանտիմետրերով) և բյուջեն (դոլարներով)։ Քանի որ դոլարով արտահայտված թվերը շատ ավելի մեծ են, քան սանտիմետրերով արտահայտվածները, դրանք «ստվերում են թողնում» վերջիններիս, և KNN-ը չի կարողանում օբյեկտիվորեն համեմատել մարդկանց։ Հավասարակշռությունը վերականգնելու համար դուք որոշում եք մասշտաբավորել (scale) երկու հատկանիշներն էլ՝ դրանք բերելով նույն միջակայքի, նախքան մարդկանց համեմատելը։
Ձեր խնդիրն է կարդալ որոշ նախնական տվյալներ և այնուհետև մասշտաբավորել նոր տվյալները։ Յուրաքանչյուր սյունակի համար հաշվեք նվազագույն և առավելագույն արժեքները՝ օգտագործելով միայն նախնական տվյալները, այնուհետև ձևափոխեք յուրաքանչյուր նոր տող այնպես, որ յուրաքանչյուր սյունակի արժեքը գտնվի միջակայքում [0,1]
՝
Եթե նախնական տվյալների որևէ սյունակ (ոտքի երկարությունը կամ բյուջեն) հաստատուն է (բոլոր արժեքները նույնն են), ապա յուրաքանչյուր նոր տողի համար այդ սյունակի մասշտաբավորված արժեքը կլինի 0։
Մուտքի առաջին տողում տրված է միակ ամբողջ թիվը՝ n
՝ նախնական տվյալների տողերի քանակը ներկայացնելու համար։ Հաջորդ n
տողերից յուրաքանչյուրը պարունակում է երկու իրական թիվ՝ ոտքի երկարությունը սանտիմետրերով և բյուջեն դոլարներով։
Այնուհետև հաջորդ տողում տրված է միակ ամբողջ թիվը՝ q
՝ նոր մասշտաբավորվող տողերի քանակը ներկայացնելու համար։ Հաջորդ q
տողերից յուրաքանչյուրը պարունակում է երկու իրական թիվ՝ ոտքի երկարությունը և բյուջեն, որոնք պետք է մասշտաբավորվեն՝ օգտագործելով նախնական տվյալներից հաշվված նվազագույն և առավելագույն արժեքները։
Ծրագիրը պետք է ելքում տպի q
տող։ Յուրաքանչյուր տող պետք է պարունակի երկու իրական թիվ՝ համապատասխան նոր տողի համար մասշտաբավորված ոտքի երկարությունը և բյուջեն։
Մուտք | Ելք |
---|---|
3 | 0.25 0.25 |
2 | 0.5 0 |
4 | 0.1666666667 0.5 |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB