CSES - IZhO 2017, day 1 - Results
Submission details
Task:Money
Sender:Yytsi
Submission time:2019-01-29 15:07:02 +0200
Language:C++
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED9
#2ACCEPTED16
#3ACCEPTED20
#4ACCEPTED55
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1details
#2ACCEPTED0.01 s1details
#3ACCEPTED0.02 s1details
#4ACCEPTED0.02 s1details
#5ACCEPTED0.01 s1details
#6ACCEPTED0.01 s1details
#7ACCEPTED0.03 s1details
#8ACCEPTED0.01 s1details
#9ACCEPTED0.02 s1details
#10ACCEPTED0.03 s1details
#11ACCEPTED0.02 s1details
#12ACCEPTED0.02 s1details
#13ACCEPTED0.01 s1details
#14ACCEPTED0.01 s1details
#15ACCEPTED0.01 s1details
#16ACCEPTED0.03 s1details
#17ACCEPTED0.02 s2details
#18ACCEPTED0.02 s2details
#19ACCEPTED0.01 s2details
#20ACCEPTED0.01 s2details
#21ACCEPTED0.02 s2details
#22ACCEPTED0.01 s2details
#23ACCEPTED0.02 s2details
#24ACCEPTED0.01 s2details
#25ACCEPTED0.02 s2details
#26ACCEPTED0.02 s2details
#27ACCEPTED0.02 s3details
#28ACCEPTED0.02 s3details
#29ACCEPTED0.01 s3details
#30ACCEPTED0.03 s3details
#31ACCEPTED0.02 s3details
#32ACCEPTED0.01 s3details
#33ACCEPTED0.02 s3details
#34ACCEPTED0.02 s3details
#35ACCEPTED0.03 s3details
#36ACCEPTED0.02 s3details
#37ACCEPTED0.02 s3details
#38ACCEPTED0.02 s3details
#39ACCEPTED0.11 s4details
#40ACCEPTED0.16 s4details
#41ACCEPTED0.09 s4details
#42ACCEPTED0.09 s4details
#43ACCEPTED0.07 s4details
#44ACCEPTED0.20 s4details
#45ACCEPTED0.21 s4details
#46ACCEPTED0.21 s4details
#47ACCEPTED0.18 s4details
#48ACCEPTED0.18 s4details
#49ACCEPTED0.23 s4details
#50ACCEPTED0.22 s4details
#51ACCEPTED0.23 s4details
#52ACCEPTED0.23 s4details
#53ACCEPTED0.23 s4details
#54ACCEPTED0.22 s4details
#55ACCEPTED0.26 s4details
#56ACCEPTED0.26 s4details
#57ACCEPTED0.25 s4details
#58ACCEPTED0.25 s4details
#59ACCEPTED0.26 s4details
#60ACCEPTED0.26 s4details
#61ACCEPTED0.25 s4details
#62ACCEPTED0.26 s4details

Compiler report

input/code.cpp: In function 'int add(int)':
input/code.cpp:38:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^

Code

#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for (int i=a; i<(b); i++)
#define IO ios_base::sync_with_stdio(0); cin.tie(0)
#define F first
#define S second
#define pb push_back
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

#define N 1010101
int n;
int v[N];
int bit[N];

void a(int k, int x) {
  for (; k <= N; bit[k] += x, k += k&-k);
}

int upto(int k) {
  int s = 0;
  for (; k >= 1; s += bit[k], k -= k&-k);
  return s;
}

int sumq(int a, int b) {
  return upto(b) - upto(a-1);
}

vector<vector<int>> chain;
set<int> cur;

int beg() { return *(cur.begin()); }
int e() { return *(cur.rbegin()); }
int add(int x) {
  cur.insert(x);
}

bool between(int a, int b) {
  if (abs(b-a) < 2) return false;
  return sumq(a+1, b-1) > 0;
}

void dmp() {
  for (int v : cur) {
    a(v, 1);
  }
}

int ans;

int main() {
  IO; cin>>n;
  FOR(i,0,n) cin>>v[i];


  FOR(i,0,n) {
    if (!cur.size()) {
      add(v[i]);
      continue;
    }

    // cur has something
    int x = v[i];

    if (x < e()) {
      // x is too small
      dmp();
      cur.clear();
      add(v[i]);
      ans++;
      continue;
    }

    // find if a < m exists
    int big = max(e(), x);
    int small = min(x, beg());

    if (between(small, big)) {
      // x can't be included.
      dmp();
      cur.clear();
      add(x);
      ans++;
      continue;
    }

    // okay to add x.
    add(x);
  }

  if (cur.size() > 0) ans++;
  cout<<ans<<"\n";
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
6
3 6 4 5 1 2

correct output
3

user output
3

Test 2

Group: 1

Verdict: ACCEPTED

input
6
1 3 5 2 4 6

correct output
4

user output
4

Test 3

Group: 1

Verdict: ACCEPTED

input
6
2 4 6 1 3 5

correct output
4

user output
4

Test 4

Group: 1

Verdict: ACCEPTED

input
6
2 3 2 3 2 3

correct output
3

user output
3

Test 5

Group: 1

Verdict: ACCEPTED

input
6
1 2 5 6 3 4

correct output
2

user output
2

Test 6

Group: 1

Verdict: ACCEPTED

input
6
1 2 5 3 4 6

correct output
3

user output
3

Test 7

Group: 1

Verdict: ACCEPTED

input
4
550483 550483 745079 243195

correct output
2

user output
2

Test 8

Group: 1

Verdict: ACCEPTED

input
8
718639 990890 718639 990890 99...

correct output
3

user output
3

Test 9

Group: 1

Verdict: ACCEPTED

input
6
75094 75094 75094 576383 16236...

correct output
3

user output
3

Test 10

Group: 1

Verdict: ACCEPTED

input
8
577594 541467 472059 277648 57...

correct output
7

user output
7

Test 11

Group: 1

Verdict: ACCEPTED

input
8
831697 182542 182542 246377 24...

correct output
4

user output
4

Test 12

Group: 1

Verdict: ACCEPTED

input
8
710010 388188 309143 388188 71...

correct output
6

user output
6

Test 13

Group: 1

Verdict: ACCEPTED

input
8
806776 806776 223756 806776 80...

correct output
2

user output
2

Test 14

Group: 1

Verdict: ACCEPTED

input
8
32911 32911 32911 32911 562837...

correct output
3

user output
3

Test 15

Group: 1

Verdict: ACCEPTED

input
8
997465 997465 968321 968321 39...

correct output
5

user output
5

Test 16

Group: 1

Verdict: ACCEPTED

input
8
468346 200735 468346 200735 88...

correct output
7

user output
7

Test 17

Group: 2

Verdict: ACCEPTED

input
15
179920 568853 179920 568853 84...

correct output
10

user output
10

Test 18

Group: 2

Verdict: ACCEPTED

input
14
626116 805032 60415 626116 388...

correct output
12

user output
12

Test 19

Group: 2

Verdict: ACCEPTED

input
10
494573 746756 237932 746756 81...

correct output
7

user output
7

Test 20

Group: 2

Verdict: ACCEPTED

input
20
371839 10893 10893 10893 98708...

correct output
11

user output
11

Test 21

Group: 2

Verdict: ACCEPTED

input
20
197220 303712 197220 389265 67...

correct output
13

user output
13

Test 22

Group: 2

Verdict: ACCEPTED

input
20
509271 509271 922019 509271 92...

correct output
6

user output
6

Test 23

Group: 2

Verdict: ACCEPTED

input
20
757151 645451 757151 757151 75...

correct output
8

user output
8

Test 24

Group: 2

Verdict: ACCEPTED

input
20
746146 385991 385991 350689 38...

correct output
11

user output
11

Test 25

Group: 2

Verdict: ACCEPTED

input
20
440622 720564 700447 459690 72...

correct output
16

user output
16

Test 26

Group: 2

Verdict: ACCEPTED

input
20
324662 468027 324662 324662 46...

correct output
14

user output
14

Test 27

Group: 3

Verdict: ACCEPTED

input
200
165 2 175 136 128 88 33 189 14...

correct output
196

user output
196

Test 28

Group: 3

Verdict: ACCEPTED

input
81
37 2 58 16 18 65 8 81 21 71 33...

correct output
77

user output
77

Test 29

Group: 3

Verdict: ACCEPTED

input
84
61 43 21 4 3 45 9 72 55 50 41 ...

correct output
80

user output
80

Test 30

Group: 3

Verdict: ACCEPTED

input
81
1 20 53 35 10 3 74 48 22 38 26...

correct output
77

user output
77

Test 31

Group: 3

Verdict: ACCEPTED

input
118
43 2 28 111 5 26 3 23 76 10 11...

correct output
110

user output
110

Test 32

Group: 3

Verdict: ACCEPTED

input
300
145507 564378 903068 564378 47...

correct output
214

user output
214

Test 33

Group: 3

Verdict: ACCEPTED

input
300
198887 496454 496454 176658 19...

correct output
180

user output
180

Test 34

Group: 3

Verdict: ACCEPTED

input
300
97004 968456 968456 968456 136...

correct output
217

user output
217

Test 35

Group: 3

Verdict: ACCEPTED

input
300
376675 480811 480811 480811 48...

correct output
78

user output
78

Test 36

Group: 3

Verdict: ACCEPTED

input
300
581370 581370 716169 581370 81...

correct output
179

user output
179

Test 37

Group: 3

Verdict: ACCEPTED

input
300
531046 550600 550600 401018 40...

correct output
258

user output
258

Test 38

Group: 3

Verdict: ACCEPTED

input
300
739447 739447 571323 571323 57...

correct output
221

user output
221

Test 39

Group: 4

Verdict: ACCEPTED

input
480481
806002 806002 621477 91785 917...

correct output
320287

user output
320287

Test 40

Group: 4

Verdict: ACCEPTED

input
788953
897530 211298 189842 844784 89...

correct output
658146

user output
658146

Test 41

Group: 4

Verdict: ACCEPTED

input
388796
806119 739351 66427 113886 113...

correct output
232110

user output
232110

Test 42

Group: 4

Verdict: ACCEPTED

input
343838
199431 288483 635849 288483 68...

correct output
297964

user output
297964

Test 43

Group: 4

Verdict: ACCEPTED

input
242351
818489 249811 887102 290660 88...

correct output
211988

user output
211988

Test 44

Group: 4

Verdict: ACCEPTED

input
1000000
738237 738237 893082 490298 43...

correct output
777569

user output
777569

Test 45

Group: 4

Verdict: ACCEPTED

input
1000000
74304 74304 74304 325602 71262...

correct output
714524

user output
714524

Test 46

Group: 4

Verdict: ACCEPTED

input
1000000
254366 875788 564327 564327 43...

correct output
777558

user output
777558

Test 47

Group: 4

Verdict: ACCEPTED

input
1000000
937517 114387 114387 114387 93...

correct output
249890

user output
249890

Test 48

Group: 4

Verdict: ACCEPTED

input
1000000
814027 682934 214670 214670 81...

correct output
500240

user output
500240

Test 49

Group: 4

Verdict: ACCEPTED

input
1000000
717896 297551 254872 297551 61...

correct output
833179

user output
833179

Test 50

Group: 4

Verdict: ACCEPTED

input
1000000
563974 664553 563974 609181 56...

correct output
750197

user output
750197

Test 51

Group: 4

Verdict: ACCEPTED

input
1000000
173690 978648 978648 978648 90...

correct output
874390

user output
874390

Test 52

Group: 4

Verdict: ACCEPTED

input
1000000
785890 785890 785890 785890 78...

correct output
750316

user output
750316

Test 53

Group: 4

Verdict: ACCEPTED

input
1000000
119439 119439 119439 354111 73...

correct output
798579

user output
798579

Test 54

Group: 4

Verdict: ACCEPTED

input
1000000
749078 95090 749078 276834 950...

correct output
750593

user output
750593

Test 55

Group: 4

Verdict: ACCEPTED

input
1000000
137937 689287 749751 213838 32...

correct output
981871

user output
981871

Test 56

Group: 4

Verdict: ACCEPTED

input
1000000
473653 274191 673488 575890 73...

correct output
981543

user output
981543

Test 57

Group: 4

Verdict: ACCEPTED

input
1000000
913583 648901 29748 168104 439...

correct output
981717

user output
981717

Test 58

Group: 4

Verdict: ACCEPTED

input
1000000
890981 682430 885587 406305 60...

correct output
981788

user output
981788

Test 59

Group: 4

Verdict: ACCEPTED

input
1000000
1 2 247847 4 767575 281751 982...

correct output
981660

user output
981660

Test 60

Group: 4

Verdict: ACCEPTED

input
1000000
285138 720188 820135 821835 91...

correct output
982003

user output
982003

Test 61

Group: 4

Verdict: ACCEPTED

input
1000000
421947 680547 224842 941720 26...

correct output
981663

user output
981663

Test 62

Group: 4

Verdict: ACCEPTED

input
1000000
963500 2 664028 4 692637 80284...

correct output
981624

user output
981624