Unikal şifrələmə açarları
Şifrələrin təhlükəsizliyi çox vaxt açarların unikal olmasına və təkrar istifadə edilməməsinə bağlıdır. Bu, həyati əhəmiyyət daşıyır, çünki nisbətən güclü bir şifrə, eyni açar bir neçə fərqli mesajın şifrələnməsi üçün istifadə olunarsa, sındırıla bilər.
Bu tapşırıqda biz təkrar (dublikat) açar istifadəsini aşkar etməyə çalışacağıq. Mesajların şifrələnməsi üçün istifadə olunan açarların ardıcıllığına malik olduğunuz halda, sizin vəzifəniz müəyyən bir zaman dövründə hansı açarların təkrar istifadə edildiyini müəyyən etməkdir.
Giriş məlumatları
Bir neçə şifrə təsviri ehtiva edir. Hər bir təsvir iki tam ədədi ehtiva edən bir sırayla başlayır: şifrələnmiş mesajların sayı m (1 ≤ m ≤ 10^6
) və sorğuların sayı q (0 ≤ q ≤ 10^6
).
Növbəti m sıranın hər biri bir ədəd k[i]
(0 ≤ k[i]
≤ 2^30
) ehtiva edir - i-ci mesajın şifrələnməsi üçün istifadə olunan açarın identifikatoru. Növbəti q sıranın hər biri bir sorğu ehtiva edir. Hər bir sorğu iki tam ədədlə b[j]
və e[j]
(1 ≤ b[j]
≤ e[j]
≤ m) verilir, yoxlamaq istədiyimiz mesajlar intervalını təyin edir.
Hər bir testdən sonra bir boş sıra gəlir. Giriş məlumatları iki sıfır ehtiva edən bir sırayla bitir.
Çıxış məlumatları
Hər bir sorğu üçün bir sıra çıxarın. Sıra b[j]
və e[j]
(daxil olmaqla) arasında olan mesajların şifrələnməsi üçün istifadə olunan bütün açarların qarşılıqlı fərqli (fərqli identifikatorlara malik) olduğunu göstərən "OK" ehtiva etməlidir. Əgər bəzi açarlar dəfələrlə istifadə olunubsa, belə bir açarın hər hansı bir identifikatorunu çıxarın.
Hər bir şifrə təsvirindən sonra bir boş sıra çıxarın.