Task: | Sum |
Sender: | 2xJelly |
Submission time: | 2019-01-18 13:33:07 +0200 |
Language: | C++ |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | WRONG ANSWER | 0 |
test | verdict | time | |
---|---|---|---|
#1 | WRONG ANSWER | 0.03 s | details |
#2 | WRONG ANSWER | 0.02 s | details |
#3 | WRONG ANSWER | 0.02 s | details |
#4 | WRONG ANSWER | 0.04 s | details |
#5 | WRONG ANSWER | 0.03 s | details |
#6 | WRONG ANSWER | 0.02 s | details |
#7 | WRONG ANSWER | 0.02 s | details |
#8 | WRONG ANSWER | 0.01 s | details |
#9 | WRONG ANSWER | 0.02 s | details |
#10 | WRONG ANSWER | 0.02 s | details |
#11 | WRONG ANSWER | 0.04 s | details |
#12 | WRONG ANSWER | 0.01 s | details |
#13 | WRONG ANSWER | 0.04 s | details |
#14 | WRONG ANSWER | 0.02 s | details |
#15 | WRONG ANSWER | 0.03 s | details |
#16 | WRONG ANSWER | 0.04 s | details |
#17 | WRONG ANSWER | 0.02 s | details |
#18 | WRONG ANSWER | 0.03 s | details |
#19 | WRONG ANSWER | 0.02 s | details |
#20 | WRONG ANSWER | 0.03 s | details |
#21 | WRONG ANSWER | 0.02 s | details |
#22 | WRONG ANSWER | 0.02 s | details |
#23 | WRONG ANSWER | 0.02 s | details |
#24 | WRONG ANSWER | 0.02 s | details |
#25 | WRONG ANSWER | 0.02 s | details |
#26 | WRONG ANSWER | 0.03 s | details |
#27 | WRONG ANSWER | 0.02 s | details |
#28 | WRONG ANSWER | 0.02 s | details |
Code
#include <iostream> #include <cmath> #include <algorithm> #include <stack> #include <queue> #include <vector> #include <string> using namespace std; typedef long long LL; const LL MAX = 200005; const LL INF = (1000 * 1000 * 1000) + 50; LL n, q; LL h[MAX] = {}, nxt[MAX] = {}; vector<LL> target[MAX] = {}; LL b_Search(LL pos, LL x) { LL answer = -1; LL lo = 0; LL hi = target[pos].size()-1; while(lo <= hi) { LL mid = lo + (hi-lo)/2; if(target[pos][mid] <= x) { answer = max(answer, mid); lo = mid+1; }else hi = mid-1; } return answer + 1; } int main(void) { cin >> n >> q; for(LL i0 = 0; i0 < n; i0++)cin >> h[i0]; stack<pair<LL, LL> > st; st.push(make_pair(0, h[0])); for(LL i0 = 1; i0 < n; i0++) { while(!st.empty() && st.top().second < h[i0]) { nxt[st.top().first] = i0; st.pop(); } st.push(make_pair(i0, h[i0])); } while(!st.empty() ) { nxt[st.top().first] = INF; st.pop(); } for(LL i0 = 0; i0 < n; i0++) { LL cur = i0; LL tempo = 0; while(tempo <= 250) { tempo++; LL t = nxt[cur]; target[i0].push_back(t); cur = t; if(cur == INF)break; } } for(LL i0 = 0; i0 < q; i0++) { LL i, j, ans = 1; cin >> i >> j; i--; j--; while(i < j) { LL SIZE = target[i].size(); LL last = target[i][SIZE-1]; if(last != INF && last <= j) { ans += SIZE; i = last; }else { ans += b_Search(i, j); break; } } cout << ans << endl; } return 0; }
Test details
Test 1
Verdict: WRONG ANSWER
input |
---|
1 |
correct output |
---|
0 |
user output |
---|
(empty) |
Test 2
Verdict: WRONG ANSWER
input |
---|
2 |
correct output |
---|
0 |
user output |
---|
(empty) |
Test 3
Verdict: WRONG ANSWER
input |
---|
3 |
correct output |
---|
0 |
user output |
---|
(empty) |
Test 4
Verdict: WRONG ANSWER
input |
---|
4 |
correct output |
---|
0 |
user output |
---|
(empty) |
Test 5
Verdict: WRONG ANSWER
input |
---|
5 |
correct output |
---|
0 |
user output |
---|
(empty) |
Test 6
Verdict: WRONG ANSWER
input |
---|
6 |
correct output |
---|
1 |
user output |
---|
(empty) |
Test 7
Verdict: WRONG ANSWER
input |
---|
7 |
correct output |
---|
1 |
user output |
---|
(empty) |
Test 8
Verdict: WRONG ANSWER
input |
---|
8 |
correct output |
---|
2 |
user output |
---|
(empty) |
Test 9
Verdict: WRONG ANSWER
input |
---|
9 |
correct output |
---|
3 |
user output |
---|
(empty) |
Test 10
Verdict: WRONG ANSWER
input |
---|
10 |
correct output |
---|
4 |
user output |
---|
(empty) |
Test 11
Verdict: WRONG ANSWER
input |
---|
20 |
correct output |
---|
24 |
user output |
---|
(empty) |
Test 12
Verdict: WRONG ANSWER
input |
---|
30 |
correct output |
---|
61 |
user output |
---|
(empty) |
Test 13
Verdict: WRONG ANSWER
input |
---|
40 |
correct output |
---|
114 |
user output |
---|
(empty) |
Test 14
Verdict: WRONG ANSWER
input |
---|
50 |
correct output |
---|
184 |
user output |
---|
(empty) |
Test 15
Verdict: WRONG ANSWER
input |
---|
60 |
correct output |
---|
271 |
user output |
---|
(empty) |
Test 16
Verdict: WRONG ANSWER
input |
---|
70 |
correct output |
---|
374 |
user output |
---|
(empty) |
Test 17
Verdict: WRONG ANSWER
input |
---|
80 |
correct output |
---|
494 |
user output |
---|
(empty) |
Test 18
Verdict: WRONG ANSWER
input |
---|
90 |
correct output |
---|
631 |
user output |
---|
(empty) |
Test 19
Verdict: WRONG ANSWER
input |
---|
100 |
correct output |
---|
784 |
user output |
---|
(empty) |
Test 20
Verdict: WRONG ANSWER
input |
---|
200 |
correct output |
---|
3234 |
user output |
---|
(empty) |
Test 21
Verdict: WRONG ANSWER
input |
---|
300 |
correct output |
---|
7351 |
user output |
---|
(empty) |
Test 22
Verdict: WRONG ANSWER
input |
---|
400 |
correct output |
---|
13134 |
user output |
---|
(empty) |
Test 23
Verdict: WRONG ANSWER
input |
---|
500 |
correct output |
---|
20584 |
user output |
---|
(empty) |
Test 24
Verdict: WRONG ANSWER
input |
---|
600 |
correct output |
---|
29701 |
user output |
---|
(empty) |
Test 25
Verdict: WRONG ANSWER
input |
---|
700 |
correct output |
---|
40484 |
user output |
---|
(empty) |
Test 26
Verdict: WRONG ANSWER
input |
---|
800 |
correct output |
---|
52934 |
user output |
---|
(empty) |
Test 27
Verdict: WRONG ANSWER
input |
---|
900 |
correct output |
---|
67051 |
user output |
---|
(empty) |
Test 28
Verdict: WRONG ANSWER
input |
---|
1000 |
correct output |
---|
82834 |
user output |
---|
(empty) |