Submission #856963
Source Code Expand
Copy
#include<bits/stdc++.h>
using namespace std;
#define li long long int
#define rep(i,to) for(li i=0;i<((li)(to));i++)
#define repp(i,start,to) for(li i=(li)(start);i<((li)(to));i++)
#define pb push_back
#define sz(v) ((li)(v).size())
#define bgn(v) ((v).begin())
#define eend(v) ((v).end())
#define allof(v) (v).begin(), (v).end()
#define dodp(v,n) memset(v,(li)n,sizeof(v))
#define bit(n) (1ll<<(li)(n))
#define mp(a,b) make_pair(a,b)
#define rin rep(i,n)
#define EPS 1e-12
#define ETOL 1e-8
#define MOD 1000000007
typedef pair<li, li> PI;
#define INF bit(60)
#define DBGP 1
#define idp if(DBGP)
#define F first
#define S second
#define p2(a,b) idp cout<<a<<"\t"<<b<<endl
#define p3(a,b,c) idp cout<<a<<"\t"<<b<<"\t"<<c<<endl
#define p4(a,b,c,d) idp cout<<a<<"\t"<<b<<"\t"<<c<<"\t"<<d<<endl
#define p5(a,b,c,d,e) idp cout<<a<<"\t"<<b<<"\t"<<c<<"\t"<<d<<"\t"<<e<<endl
#define p6(a,b,c,d,e,f) idp cout<<a<<"\t"<<b<<"\t"<<c<<"\t"<<d<<"\t"<<e<<"\t"<<f<<endl
#define p7(a,b,c,d,e,f,g) idp cout<<a<<"\t"<<b<<"\t"<<c<<"\t"<<d<<"\t"<<e<<"\t"<<f<<"\t"<<g<<endl
#define p8(a,b,c,d,e,f,g,h) idp cout<<a<<"\t"<<b<<"\t"<<c<<"\t"<<d<<"\t"<<e<<"\t"<<f<<"\t"<<g<<"\t"<<h<<endl
#define p9(a,b,c,d,e,f,g,h,i) idp cout<<a<<"\t"<<b<<"\t"<<c<<"\t"<<d<<"\t"<<e<<"\t"<<f<<"\t"<<g<<"\t"<<h<<"\t"<<i<<endl
#define p10(a,b,c,d,e,f,g,h,i,j) idp cout<<a<<"\t"<<b<<"\t"<<c<<"\t"<<d<<"\t"<<e<<"\t"<<f<<"\t"<<g<<"\t"<<h<<"\t"<<i<<"\t"<<j<<endl
#define foreach(it,v) for(__typeof((v).begin()) it=(v).begin(); it!=(v).end(); ++it)
#define p2p(x) idp p2((x).F, (x).S)
#define dump(x,n) idp{rep(i,n){cout<<x[i]<<" ";}puts("");}
#define dump2(x,n) idp{rep(i,n){cout<<"["<<x[i].F<<" , "<<x[i].S<<"] ";}puts("");}
#define dumpi(x) idp{foreach(it, x){cout<<(*it)<<" ";}puts("");}
#define dumpi2(x) idp{foreach(it, x){cout<<"["<<(it)->F<<" , "<<(it)->S<<"] ";}puts("");}
#define read2d(a,w,h) rep(i,h)rep(j,w)cin>>a[i][j]
#define dump2d(a,w,h) rep(i,h){rep(j,w)cout<<a[i][j]<<" ";puts("");}
typedef pair<li, li> PI;
li n;
li x[100100];
li l;
li next_[22][100100];
li step[20];
inline li calc_next_(li pos) {
li* new_pos = upper_bound(x, x + n, x[pos] + l);
return (li)(new_pos - 1 - x);
}
inline li solve(li a, li b) {
if (a > b)swap(a, b);
li pos = a;
li res = 0;
while (pos != b) {
//p3(a, b, pos);
res++;
if (x[b] - x[pos] <= l) {
pos = b;
continue;
}
pos = calc_next_(pos);
}
return res;
}
inline li solve2(li a, li b) {
if (a > b)swap(a, b);
li step_width = 20;
li res = 0;
while (step_width >= 0) {
if (next_[step_width][a] > b) {
// stepが大きすぎた
} else if (next_[step_width][a] == b) {
// ちょうど着けた
res += step[step_width];
return res;
} else {
// stepではまだつけない
a = next_[step_width][a];
res += step[step_width];
}
step_width--;
}
return res;
}
int main() {
cin >> n;
rin{cin >> x[i];}
li q;
cin >> l >> q;
rep(i, n) {
next_[0][i] = calc_next_(i);
}
next_[0][n - 1] = n;
step[0] = 1;
repp(i, 1, 21) {
rep(j, n) {
li mid = next_[i - 1][j];
if (mid >= n - 1) {
next_[i][j] = n;
} else {
next_[i][j] = next_[i - 1][mid];
}
}
step[i] = step[i - 1] * 2;
}
//dump2d(next_, n, 21);
rep(i, q) {
li a, b;
cin >> a >> b;
a--;
b--;
cout << solve2(a, b) << endl;
}
return 0;
}
Submission Info
Submission Time |
|
Task |
E - Tak and Hotels |
User |
ynq1242 |
Language |
C++14 (GCC 5.4.1) |
Score |
0 |
Code Size |
3450 Byte |
Status |
WA |
Exec Time |
1099 ms |
Memory |
18048 KB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:119:28: warning: iteration 19u invokes undefined behavior [-Waggressive-loop-optimizations]
step[i] = step[i - 1] * 2;
^
./Main.cpp:7:48: note: containing loop
#define repp(i,start,to) for(li i=(li)(start);i<((li)(to));i++)
^
./Main.cpp:110:2: note: in expansion of macro ‘repp’
repp(i, 1, 21) {
^
Judge Result
Set Name |
Sample |
Subtask1 |
All |
Score / Max Score |
0 / 0 |
0 / 200 |
0 / 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 |
4 ms |
384 KB |
subtask1_01.txt |
WA |
5 ms |
384 KB |
subtask1_02.txt |
WA |
4 ms |
384 KB |
subtask1_03.txt |
WA |
14 ms |
512 KB |
subtask1_04.txt |
AC |
14 ms |
512 KB |
subtask1_05.txt |
WA |
13 ms |
512 KB |
subtask1_06.txt |
AC |
9 ms |
384 KB |
subtask1_07.txt |
WA |
9 ms |
384 KB |
subtask1_08.txt |
WA |
14 ms |
512 KB |
subtask1_09.txt |
WA |
14 ms |
512 KB |
subtask1_10.txt |
WA |
14 ms |
512 KB |
subtask1_11.txt |
WA |
14 ms |
512 KB |
subtask1_12.txt |
WA |
14 ms |
512 KB |
subtask1_13.txt |
WA |
14 ms |
512 KB |
subtask2_01.txt |
WA |
932 ms |
17920 KB |
subtask2_02.txt |
AC |
981 ms |
18048 KB |
subtask2_03.txt |
WA |
993 ms |
17792 KB |
subtask2_04.txt |
WA |
693 ms |
11776 KB |
subtask2_05.txt |
WA |
656 ms |
11904 KB |
subtask2_06.txt |
WA |
942 ms |
17664 KB |
subtask2_07.txt |
WA |
979 ms |
17920 KB |
subtask2_08.txt |
WA |
1099 ms |
18048 KB |
subtask2_09.txt |
WA |
954 ms |
18048 KB |
subtask2_10.txt |
WA |
992 ms |
18048 KB |
subtask2_11.txt |
WA |
1092 ms |
16768 KB |
subtask2_12.txt |
WA |
866 ms |
18048 KB |
subtask2_13.txt |
WA |
1047 ms |
17664 KB |