# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
79895 | 2018-10-17T05:37:57 Z | imeimi2000 | XOR (IZhO12_xor) | C++17 | 1272 ms | 41896 KB |
#include <cstdio> #include <unordered_map> using namespace std; typedef long long llong; typedef pair<int, int> pii; int n, k; int ansi, ansk = 0; int a[250001]; int main() { scanf("%d%d", &n, &k); for (int i = 1; i <= n; ++i) { scanf("%d", a + i); a[i] ^= a[i - 1]; } if (k == 0) { printf("1 %d\n", n); return 0; } --k; for (int i = 0; i < 30; ++i) { if ((k >> i) & 1) continue; int x = (k >> i) ^ 1; unordered_map<int, int> mp; for (int j = 0; j <= n; ++j) mp[a[j] >> i] = j; for (int j = 0; j <= n; ++j) { int mx = mp[(a[j] >> i) ^ x]; if (ansk < mx - j) ansk = mx - j, ansi = j + 1; else if (ansk == mx - j && j + 1 < ansi) ansi = j + 1; } } printf("%d %d\n", ansi, ansk); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 480 KB | Output is correct |
3 | Correct | 2 ms | 500 KB | Output is correct |
4 | Correct | 3 ms | 656 KB | Output is correct |
5 | Correct | 14 ms | 2164 KB | Output is correct |
6 | Correct | 15 ms | 2520 KB | Output is correct |
7 | Correct | 19 ms | 2788 KB | Output is correct |
8 | Correct | 18 ms | 3240 KB | Output is correct |
9 | Correct | 293 ms | 11148 KB | Output is correct |
10 | Correct | 163 ms | 11908 KB | Output is correct |
11 | Correct | 303 ms | 12248 KB | Output is correct |
12 | Correct | 129 ms | 13576 KB | Output is correct |
13 | Correct | 226 ms | 14336 KB | Output is correct |
14 | Correct | 261 ms | 14956 KB | Output is correct |
15 | Correct | 89 ms | 14956 KB | Output is correct |
16 | Correct | 168 ms | 15968 KB | Output is correct |
17 | Correct | 1272 ms | 35888 KB | Output is correct |
18 | Correct | 370 ms | 36936 KB | Output is correct |
19 | Correct | 177 ms | 36936 KB | Output is correct |
20 | Correct | 1062 ms | 41896 KB | Output is correct |