#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
const int INF = -2147483648;
const int MAX_N = 150500;
int n,l,a[MAX_N],ans,covered = INF;
vector<int> v1,v2;
void input() {
scanf("%d %d",&n,&l);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);
return;
}
inline int calc(int x, int y) {
int front, rear;
if(x<y) {
rear = x+l;
front = max(covered, y-l);
covered = x+l;
}
else {
rear = y+l;
front = max(covered, x-l);
covered = y+l;
}
return max(rear - front,0);
}
void solve() {
bool pushzero = true;
v1.push_back(a[0]);
for(int i=1;i<n;i++) {
if(a[i]-a[i-1] < 2*l) {
if(pushzero) v2.push_back(a[i]), pushzero = false;
else v1.push_back(a[i]), pushzero = true;
}
else v1.push_back(a[i]);
}
int iter1 = 0, iter2 = 0;
while(iter1 < v1.size() || iter2 < v2.size()) {
//printf("%d %d\n",v1[iter1], v2[iter2]);
if(iter1 == v1.size()) {
ans += calc(v1[iter1-1], v2[iter2]);
iter2 ++;
}
else if(iter2 == v2.size()) {
ans += calc(v1[iter1], v2[iter2-1]);
iter1 ++;
}
else {
ans += calc(v1[iter1], v2[iter2]);
if(v1[iter1] < v2[iter2]) iter1 ++;
else iter2 ++;
}
}
printf("%d\n",ans);
}
int main() {
input();
solve();
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
1796 KB |
Output isn't correct |
2 |
Incorrect |
0 ms |
1796 KB |
Output isn't correct |
3 |
Incorrect |
0 ms |
1796 KB |
Output isn't correct |
4 |
Incorrect |
0 ms |
1796 KB |
Output isn't correct |
5 |
Runtime error |
0 ms |
1792 KB |
SIGSEGV Segmentation fault |
6 |
Runtime error |
0 ms |
1792 KB |
SIGSEGV Segmentation fault |
7 |
Incorrect |
0 ms |
1796 KB |
Output isn't correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
1796 KB |
Output is correct |
2 |
Correct |
0 ms |
1796 KB |
Output is correct |
3 |
Correct |
0 ms |
1796 KB |
Output is correct |
4 |
Incorrect |
0 ms |
1796 KB |
Output isn't correct |
5 |
Correct |
0 ms |
1796 KB |
Output is correct |
6 |
Correct |
0 ms |
1796 KB |
Output is correct |
7 |
Incorrect |
0 ms |
1796 KB |
Output isn't correct |
8 |
Correct |
0 ms |
1796 KB |
Output is correct |
9 |
Incorrect |
0 ms |
1796 KB |
Output isn't correct |
10 |
Correct |
0 ms |
1796 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
49 ms |
2824 KB |
Output isn't correct |
2 |
Incorrect |
33 ms |
2824 KB |
Output isn't correct |
3 |
Incorrect |
44 ms |
2824 KB |
Output isn't correct |
4 |
Incorrect |
19 ms |
2312 KB |
Output isn't correct |
5 |
Incorrect |
30 ms |
2824 KB |
Output isn't correct |
6 |
Incorrect |
0 ms |
1796 KB |
Output isn't correct |
7 |
Incorrect |
44 ms |
2824 KB |
Output isn't correct |
8 |
Incorrect |
31 ms |
2824 KB |
Output isn't correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
19 ms |
2720 KB |
Output isn't correct |
2 |
Correct |
35 ms |
3212 KB |
Output is correct |
3 |
Incorrect |
0 ms |
1796 KB |
Output isn't correct |
4 |
Correct |
33 ms |
2444 KB |
Output is correct |
5 |
Correct |
21 ms |
3212 KB |
Output is correct |
6 |
Correct |
21 ms |
2444 KB |
Output is correct |
7 |
Incorrect |
41 ms |
3212 KB |
Output isn't correct |
8 |
Correct |
33 ms |
2444 KB |
Output is correct |
9 |
Correct |
26 ms |
2444 KB |
Output is correct |
10 |
Incorrect |
51 ms |
2568 KB |
Output isn't correct |
11 |
Correct |
17 ms |
2076 KB |
Output is correct |
12 |
Incorrect |
44 ms |
3212 KB |
Output isn't correct |
13 |
Incorrect |
34 ms |
2444 KB |
Output isn't correct |
14 |
Incorrect |
38 ms |
2868 KB |
Output isn't correct |
15 |
Incorrect |
40 ms |
3212 KB |
Output isn't correct |