CSES - DatatÃ¤hti Open 2017 - Results
 Task: Tunnels Sender: herkar Submission time: 2017-01-22 13:04:51 +0200 Language: C++ Status: READY Result: 0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.04 s1details
#20.03 s1details
#30.05 s1details
#40.04 s1details
#50.05 s1details
#60.04 s2details
#70.04 s2details
#80.23 s2details
#90.22 s2details
#100.05 s2details
#110.28 s3details
#120.12 s3details
#130.22 s3details
#140.31 s3details
#150.21 s3details

### Code

```#include <functional>
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
#include <set>
#include <map>
using namespace std;
#define rep(i,a,b) for(int i = (a); i < int(b); ++i)
#define rrep(i,a,b) for(int i = (b); i --> int(a); )
#define trav(i,v) for(auto&i:v)
#define all(c) (c).begin(), (c).end()
#define sz(c) int((c).size())
typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> pii;
int main(){
cin.tie(0);
cin.sync_with_stdio(0);
int n,k;
cin >> n >> k;
vi v(n);
trav(i,v) cin >> i;
set<pii> S;
map<int,int> C;
if(C[a]++) return;
if(S.empty()){
S.insert({a,a});
return;
}
auto it = S.lower_bound({a,-1});
if(it == S.begin()){
if(it->first == a+1){
pii p = *it;
S.erase(it);
S.insert({a,p.second});
} else S.insert({a,a});
} else if(it == S.end()) {
--it;
if(it->second == a-1){
pii p = *it;
S.erase(it);
S.insert({p.first,a});
} else S.insert({a,a});
} else {
auto it2 = it--;
if(it->second == a-1 && it2->first == a+1){
pii p = {it->first,it2->second};
S.erase(it),S.erase(S.upper_bound({a,-1}));
S.insert(p);
} else if(it->second == a-1){
pii p = {it->first,a};
S.erase(it);
S.insert(p);
} else if(it2->first == a+1){
pii p = {a,it2->second};
S.erase(it2);
S.insert(p);
} else S.insert({a,a});
}
}, rem = [&](int a){
if(--C[a]) return;
auto it = --S.upper_bound({a,-1});
pii p = *it;
S.erase(it);
if(p.first == a){
if(p.first != p.second) S.insert({a+1,p.second});
} else if(p.second == a)
S.insert({p.first,a-1});
else
S.insert({p.first,a-1}),S.insert({a+1,p.second});
};
rep(i,k,n+1){
pii p = *S.begin();
if(!p.first) cout << p.second+1 << " ";
else cout << p.first-1 << " ";
rem(v[i-k]);
}
cout << endl;
}```

### Test details

Group: 1

Verdict:

input
10 20
4 5
6 4
5 1
5 9
...

correct output
11

user output
(empty)

Group: 1

Verdict:

input
10 10
7 3
5 2
9 7
1 5
...

correct output
5

user output

Group: 1

Verdict:

input
10 5
5 7
3 8
5 8
3 7
...

correct output
4

user output
2 2 2 2 2 2

Group: 1

Verdict:

input
10 4
9 1
6 8
7 1
5 7

correct output
3

user output
0 0 0 0 0 2 1

#### Test 5

Group: 1

Verdict:

input
10 2
10 6
2 1

correct output
2

user output
5 1 0 2 1 1 1 1 1

Group: 2

Verdict:

input
100 200
24 40
25 6
36 93
92 90
...

correct output
97

user output
(empty)

Group: 2

Verdict:

input
100 100
98 37
91 37
60 92
46 27
...

correct output
60

user output

#### Test 8

Group: 2

Verdict:

input
100 50
74 95
53 72
69 85
14 13
...

correct output
34

user output
(empty)

Error:
`*** Error in `input/code': free(): invalid pointer: 0x00007ffc290feed8 ***`

#### Test 9

Group: 2

Verdict:

input
100 40
28 76
10 81
13 52
46 83
...

correct output
29

user output
(empty)

Error:
`*** Error in `input/code': free(): invalid pointer: 0x00007ffeb040e9b8 ***`

#### Test 10

Group: 2

Verdict:

input
100 20
27 35
72 92
56 4
64 80
...

correct output
18

user output
2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

Group: 3

Verdict:

input
100000 200000
89244 59358
22943 56710
63331 89437
56581 38400
...

correct output
102510

user output
(empty)

Group: 3

Verdict:

input
100000 100000
21701 85599
61542 21474
38081 29362
46316 64038
...

correct output
60593

user output

#### Test 13

Group: 3

Verdict:

input
100000 50000
86469 4833
16351 35505
59315 33011
95464 16985
...

correct output
35933

user output
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...

Error:
`*** Error in `input/code': free(): invalid pointer: 0x00007ffd58f55548 ***`

#### Test 14

Group: 3

Verdict:

input
100000 40000
5392 23534
63204 45619
74330 25925
59678 88427
...

correct output
30074

user output
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...

Error:
`*** Error in `input/code': free(): invalid pointer: 0x00007ffd7dccdc48 ***`

#### Test 15

Group: 3

Verdict:

input
100000 20000
80156 16531
71753 77661
7028 33389
17168 646
...

correct output
16882

user output
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 ...