# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
44841 | 2018-04-08T05:00:11 Z | RayaBurong25_1 | Roller Coaster Railroad (IOI16_railroad) | C++17 | 745 ms | 54144 KB |
#include "railroad.h" #include <set> #include <algorithm> #include <stdio.h> std::set<int> EP; std::vector<int> EPc; long long FenR[200005]; long long FenL[200005]; void upR(int p, long long v) { for (; p <= EPc.size(); p += p&-p) FenR[p] += v; } void upL(int p, long long v) { for (; p <= EPc.size(); p += p&-p) FenL[p] += v; } long long queryR(int p) { long long r = 0; for (; p > 0; p -= p&-p) r += FenR[p]; return r; } long long queryL(int p) { long long r = 0; for (; p > 0; p -= p&-p) r += FenL[p]; return r; } long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) { int n = (int) s.size(); int i; for (i = 0; i < n; i++) { EP.insert(s[i]); EP.insert(t[i]); } std::set<int>::iterator it; for (it = EP.begin(); it != EP.end(); it++) EPc.push_back(*it); for (i = 0; i < n; i++) { s[i] = std::lower_bound(EPc.begin(), EPc.end(), s[i]) - EPc.begin() + 1; t[i] = std::lower_bound(EPc.begin(), EPc.end(), t[i]) - EPc.begin() + 1; if (s[i] < t[i]) { upR(s[i], 1LL); upR(t[i], -1LL); } else if (s[i] > t[i]) { upL(t[i], 1LL); upL(s[i], -1LL); } } long long ans = 0, r; for (i = 0; i < EPc.size() - 1; i++) { if ((r = queryR(i + 1) - queryL(i + 1)) > 1) { ans += (r - 1)*(EPc[i + 1] - EPc[i]); } // printf("r %lld\n", r); } return ans; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 256 KB | n = 2 |
2 | Correct | 2 ms | 360 KB | n = 2 |
3 | Correct | 2 ms | 448 KB | n = 2 |
4 | Correct | 2 ms | 596 KB | n = 2 |
5 | Correct | 2 ms | 596 KB | n = 2 |
6 | Correct | 2 ms | 596 KB | n = 2 |
7 | Correct | 2 ms | 596 KB | n = 3 |
8 | Correct | 2 ms | 596 KB | n = 3 |
9 | Correct | 2 ms | 608 KB | n = 3 |
10 | Correct | 2 ms | 608 KB | n = 8 |
11 | Incorrect | 2 ms | 608 KB | answer is not correct: 187084041 instead of 189002015 |
12 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 256 KB | n = 2 |
2 | Correct | 2 ms | 360 KB | n = 2 |
3 | Correct | 2 ms | 448 KB | n = 2 |
4 | Correct | 2 ms | 596 KB | n = 2 |
5 | Correct | 2 ms | 596 KB | n = 2 |
6 | Correct | 2 ms | 596 KB | n = 2 |
7 | Correct | 2 ms | 596 KB | n = 3 |
8 | Correct | 2 ms | 596 KB | n = 3 |
9 | Correct | 2 ms | 608 KB | n = 3 |
10 | Correct | 2 ms | 608 KB | n = 8 |
11 | Incorrect | 2 ms | 608 KB | answer is not correct: 187084041 instead of 189002015 |
12 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 745 ms | 54144 KB | Execution killed with signal 11 (could be triggered by violating memory limits) |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 256 KB | n = 2 |
2 | Correct | 2 ms | 360 KB | n = 2 |
3 | Correct | 2 ms | 448 KB | n = 2 |
4 | Correct | 2 ms | 596 KB | n = 2 |
5 | Correct | 2 ms | 596 KB | n = 2 |
6 | Correct | 2 ms | 596 KB | n = 2 |
7 | Correct | 2 ms | 596 KB | n = 3 |
8 | Correct | 2 ms | 596 KB | n = 3 |
9 | Correct | 2 ms | 608 KB | n = 3 |
10 | Correct | 2 ms | 608 KB | n = 8 |
11 | Incorrect | 2 ms | 608 KB | answer is not correct: 187084041 instead of 189002015 |
12 | Halted | 0 ms | 0 KB | - |