CSES - IZhO 2017, day 2 - Results
Submission details
Task:Simple game
Sender:henrikaalto
Submission time:2019-02-10 20:44:01 +0200
Language:C++
Status:READY
Result:22
Feedback
groupverdictscore
#1ACCEPTED22
#20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.02 s1, 3details
#2ACCEPTED0.03 s1, 3details
#3ACCEPTED0.03 s1, 3details
#4ACCEPTED0.01 s1, 3details
#5ACCEPTED0.03 s1, 3details
#6ACCEPTED0.01 s1, 3details
#7ACCEPTED0.02 s1, 2, 3details
#80.15 s2, 3details
#90.20 s2, 3details
#100.21 s2, 3details
#11ACCEPTED0.14 s2, 3details
#120.20 s2, 3details
#130.19 s3details
#140.18 s3details
#150.19 s3details
#160.20 s3details
#170.19 s3details
#18ACCEPTED0.17 s2, 3details

Code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N (1<<17)
#define f first
#define s second
typedef pair<int,int> P;

int d[N];

int main() {
  ios_base::sync_with_stdio(0);
  int n,m; cin>>n>>m;
  for(int i=1;i<=n;i++) cin>>d[i];
  if(1e4<=n){
  //if(0x1231312){
    vector<pair<int,int>> v(n-1);
    for(int i=1;i<n;i++)
      v[i-1]={max(d[i+1],d[i]),-min(d[i+1],d[i])};
    sort(v.begin(),v.end());
    for(int i=0;i<m;i++){
      int c,a;
      cin>>c>>a;
      
      int k=-1;
      for(int b=n;b;b/=2){
        while(b+k<n-1&&v[b+k].f<a){
          k+=b;
        }
      }
      k++;
      if(k==n-1){cout<<"0\n"; continue;}
      
      int l=k;
      for(int b=n;b;b/=2)
        while(l+b<n-1&&-v[b+l].s<=a) l+=b;
      l++;
      cout<<l-k<<"\n";

    }




























  } else{
  while(m--){
    int c; cin>>c;
    if(c==1){
      int a,b; cin>>a>>b;
      d[a]=b;
    }
    else{
      int a; cin>>a;
      int res=0;
      for(int i=1;i<n;i++)
        if((d[i]<=a&&a<=d[i+1])||
          (a<=d[i]&&d[i+1]<=a)) res++;
      cout<<res<<"\n";
    }
  } }
}

Test details

Test 1

Group: 1, 3

Verdict: ACCEPTED

input
3 3
1 5 1
2 3
1 1 5
2 3

correct output
2
1

user output
2
1

Test 2

Group: 1, 3

Verdict: ACCEPTED

input
1000 1000
403944 539844 451514 488113 69...

correct output
444
462
34
516
288
...

user output
444
462
34
516
288
...

Test 3

Group: 1, 3

Verdict: ACCEPTED

input
1000 1000
487368 55984 456259 117591 818...

correct output
440
400
480
130
38
...

user output
440
400
480
130
38
...

Test 4

Group: 1, 3

Verdict: ACCEPTED

input
1000 1000
570792 604828 236813 971260 13...

correct output
386
460
50
470
126
...

user output
386
460
50
470
126
...

Test 5

Group: 1, 3

Verdict: ACCEPTED

input
1000 1000
686920 120969 241559 600738 48...

correct output
330
306
418
290
136
...

user output
330
306
418
290
136
...

Test 6

Group: 1, 3

Verdict: ACCEPTED

input
1000 1000
737640 478325 54816 262919 609...

correct output
230
418
148
338
4
...

user output
230
418
148
338
4
...

Test 7

Group: 1, 2, 3

Verdict: ACCEPTED

input
1000 1000
1 1000000 1 1000000 1 1000000 ...

correct output
999
999
999
999
999
...

user output
999
999
999
999
999
...

Test 8

Group: 2, 3

Verdict:

input
100000 100000
18 15 8 5 7 19 19 11 11 8 6 15...

correct output
0
0
0
0
0
...

user output
0
1
1
0
0
...

Test 9

Group: 2, 3

Verdict:

input
100000 100000
611680 625326 848926 304761 34...

correct output
30636
30745
50130
4464
9086
...

user output
25297
33824
20880
3126
9332
...

Test 10

Group: 2, 3

Verdict:

input
100000 100000
695104 174171 853672 901534 35...

correct output
31870
39772
30788
11144
42732
...

user output
18946
19898
34439
11484
52064
...

Test 11

Group: 2, 3

Verdict: ACCEPTED

input
100000 100000
1 1 1 2 1 1 2 1 2 2 1 2 2 1 1 ...

correct output
0
0
0
0
0
...

user output
0
0
0
0
0
...

Test 12

Group: 2, 3

Verdict:

input
100000 100000
2845 22894 4105 11830 29440 21...

correct output
45066
50090
24109
27778
294
...

user output
36147
73997
4169
28943
294
...

Test 13

Group: 3

Verdict:

input
100000 100000
123269 247698 241557 639404 38...

correct output
37412
1520
46224
964
50058
...

user output
34317
9376
1
1
3444
...

Test 14

Group: 3

Verdict:

input
100000 100000
206693 572351 22110 493074 737...

correct output
33086
49042
43971
17756
41889
...

user output
37488
2825
1
1
61242
...

Test 15

Group: 3

Verdict:

input
100000 100000
322821 121195 59560 155256 829...

correct output
28252
45031
28212
6208
31642
...

user output
30218
12501
1
1
16419
...

Test 16

Group: 3

Verdict:

input
100000 100000
438949 637336 872818 784733 17...

correct output
45374
22320
9690
5630
40012
...

user output
48623
18751
1
1
70956
...

Test 17

Group: 3

Verdict:

input
100000 100000
489669 186180 653371 446915 52...

correct output
43104
43128
41430
35554
996
...

user output
48177
28613
1
1
50099
...

Test 18

Group: 2, 3

Verdict: ACCEPTED

input
100000 100000
1 1000000 1 1000000 1 1000000 ...

correct output
99999
99999
99999
99999
99999
...

user output
99999
99999
99999
99999
99999
...