// // File: unique.cc // Author: cteam33 // // Created on November 13, 2011, 11:52 AM // #include #include #include #include #define SIZE_POLE 200000000 unsigned char pole[SIZE_POLE]; int get(int i) { unsigned char t = pole[i / 8]; int offset = i % 8; unsigned char h = 0x1; h = h << offset; return t & h; } int set(int i) { unsigned char t = pole[i / 8]; int offset = i % 8; unsigned char h = 0x1; h = h << offset; int old = t & h; pole[i / 8] = t | h; return old; } void clear() { memset(pole, 0, sizeof(unsigned char) * SIZE_POLE); } // // // int main(int argc, char** argv) { int m, q; int input[1100000]; for (;;) { scanf("%i %i\n", &m, &q); if (m == 0 && q == 0) { return 0; } for (int i = 0; i < m; i++) { scanf("%i\n", input + i); } for (int i = 0; i < q; i++) { int a, b; scanf("%i %i\n", &a, &b); clear(); bool found = false; for (int j = a - 1; j <= b - 1; j++) { int old = set(input[j]); if (old) { printf("%i\n", input[j]); found = true; break; } } if (!found) { printf("OK\n"); } } scanf("\n"); printf("\n"); } return 0; }