Submission #3419723
Source Code Expand
#include <iostream> using namespace std; using ll = long long; int main() { int N; cin >> N; int x[N + 1]; for (int i = 0; i < N; ++i) { cin >> x[i]; } int L, Q; cin >> L >> Q; int fore[20][N]; int back[20][N]; // fore[d][i] = 2^d日でx_iからどこまで進めるか // back[d][i] = 2^d日でx_iからどこまで戻れるか for (int i = 0; i < N; ++i) { int ok = i, ng = N; while (ng - ok > 1) { int mid = (ok + ng) / 2; if (x[mid] - x[i] <= L) { ok = mid; } else { ng = mid; } } fore[0][i] = ok; ok = i, ng = -1; while (ok - ng > 1) { int mid = (ok + ng) / 2; if (x[i] - x[mid] <= L) { ok = mid; } else { ng = mid; } } back[0][i] = ok; } for (int d = 1; d < 20; ++d) { for (int i = 0; i < N; ++i) { fore[d][i] = fore[d - 1][fore[d - 1][i]]; back[d][i] = back[d - 1][back[d - 1][i]]; } } for (int q = 0; q < Q; ++q) { int a, b; cin >> a >> b; --a; --b; int ans = 0; if (a <= b) { while (a < b) { if (fore[0][a] >= b) { ++ans; a = fore[0][a]; continue; } for (int d = 19; d >= 0; --d) { if (fore[d][a] >= b) continue; ans += (1 << d); a = fore[d][a]; break; } } } else { while (a > b) { if (back[0][a] <= b) { ++ans; a = back[0][a]; continue; } for (int d = 19; d >= 0; --d) { if (back[d][a] <= b) continue; ans += (1 << d); a = back[d][a]; break; } } } cout << ans << endl; } return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - Tak and Hotels |
User | Tiramister |
Language | C++14 (GCC 5.4.1) |
Score | 700 |
Code Size | 2266 Byte |
Status | AC |
Exec Time | 376 ms |
Memory | 16896 KB |
Judge Result
Set Name | Sample | Subtask1 | All | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 200 / 200 | 500 / 500 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | example_01.txt |
Subtask1 | example_01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt |
All | example_01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
example_01.txt | AC | 1 ms | 256 KB |
subtask1_01.txt | AC | 1 ms | 256 KB |
subtask1_02.txt | AC | 1 ms | 256 KB |
subtask1_03.txt | AC | 4 ms | 384 KB |
subtask1_04.txt | AC | 4 ms | 384 KB |
subtask1_05.txt | AC | 4 ms | 384 KB |
subtask1_06.txt | AC | 3 ms | 384 KB |
subtask1_07.txt | AC | 3 ms | 384 KB |
subtask1_08.txt | AC | 4 ms | 384 KB |
subtask1_09.txt | AC | 4 ms | 384 KB |
subtask1_10.txt | AC | 4 ms | 384 KB |
subtask1_11.txt | AC | 4 ms | 384 KB |
subtask1_12.txt | AC | 4 ms | 384 KB |
subtask1_13.txt | AC | 4 ms | 384 KB |
subtask2_01.txt | AC | 333 ms | 16640 KB |
subtask2_02.txt | AC | 376 ms | 16768 KB |
subtask2_03.txt | AC | 353 ms | 16640 KB |
subtask2_04.txt | AC | 197 ms | 10880 KB |
subtask2_05.txt | AC | 227 ms | 11008 KB |
subtask2_06.txt | AC | 300 ms | 16384 KB |
subtask2_07.txt | AC | 348 ms | 16768 KB |
subtask2_08.txt | AC | 344 ms | 16768 KB |
subtask2_09.txt | AC | 352 ms | 16768 KB |
subtask2_10.txt | AC | 341 ms | 16768 KB |
subtask2_11.txt | AC | 345 ms | 15488 KB |
subtask2_12.txt | AC | 304 ms | 16896 KB |
subtask2_13.txt | AC | 303 ms | 16384 KB |