CSES - KILO 2018 3/5 - Results
Submission details
Task:Kangaroo Keeping
Sender:ollpu
Submission time:2018-09-20 17:29:01 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.02 sdetails
#2ACCEPTED0.02 sdetails
#3ACCEPTED0.01 sdetails
#4ACCEPTED0.04 sdetails
#5ACCEPTED0.06 sdetails
#6ACCEPTED0.38 sdetails
#7ACCEPTED0.08 sdetails
#8ACCEPTED0.21 sdetails
#9ACCEPTED0.21 sdetails
#10ACCEPTED0.21 sdetails
#11ACCEPTED0.23 sdetails
#12ACCEPTED0.22 sdetails
#13ACCEPTED0.22 sdetails
#14ACCEPTED0.22 sdetails
#15ACCEPTED0.23 sdetails
#16ACCEPTED0.11 sdetails
#17ACCEPTED0.10 sdetails
#18ACCEPTED0.11 sdetails
#19ACCEPTED0.11 sdetails
#20ACCEPTED0.10 sdetails
#21ACCEPTED0.35 sdetails
#22ACCEPTED0.36 sdetails
#23ACCEPTED0.35 sdetails
#24ACCEPTED0.35 sdetails
#25ACCEPTED0.35 sdetails

Code

#include <bits/stdc++.h>
using namespace std;
const int SN = 317;
long cs[SN];
long sm[SN*SN], smb[SN];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, m, q;
  cin >> n >> m >> q;
  for (int qi = 0; qi < q; ++qi) {
    int t;
    cin >> t;
    if (t == 1) {
      int s;
      cin >> s;
      if (s < SN) cs[s]++;
      else {
        for (int i = s; i <= n; i += s) {
          sm[i]++;
          smb[i/SN]++;
        }
      }
    } else {
      int a, b;
      cin >> a >> b;
      long sum = 0;
      for (int i = 1; i < SN; ++i) {
        int xa = a/i+!!(a%i);
        int xb = b/i;
        if (xa > xb) continue;
        sum += (xb-xa+1)*cs[i];
      }
      for (int i = a; i <= b; ++i) {
        if (i%SN || i+SN-1 > b) {
          sum += sm[i];
        } else {
          sum += smb[i/SN];
          i += SN-1;
        }
      }
      cout << sum << "\n";
    }
  }
}

Test details

Test 1

Verdict: ACCEPTED

input
5 5 5
1 1
1 3
2 2 4
1 2
...

correct output
4
3

user output
4
3

Test 2

Verdict: ACCEPTED

input
1 1 1
2 1 1

correct output
0

user output
0

Test 3

Verdict: ACCEPTED

input
100000 1 2
1 1
2 100000 100000

correct output
1

user output
1

Test 4

Verdict: ACCEPTED

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

correct output
9999900000

user output
9999900000

Test 5

Verdict: ACCEPTED

input
100000 100000 100000
1 1000
1 1000
1 1000
1 1000
...

correct output
(empty)

user output
(empty)

Test 6

Verdict: ACCEPTED

input
100000 100000 100000
2 41360 42905
2 13795 44578
2 9212 86083
2 4454 85230
...

correct output
0
0
0
0
0
...

user output
0
0
0
0
0
...

Test 7

Verdict: ACCEPTED

input
100000 100000 100000
1 707
1 707
1 707
1 707
...

correct output
(empty)

user output
(empty)

Test 8

Verdict: ACCEPTED

input
100000 100000 100000
1 75641
1 86337
1 919
2 52055 78208
...

correct output
30
4
2
41
56
...

user output
30
4
2
41
56
...

Test 9

Verdict: ACCEPTED

input
100000 100000 100000
1 1094
1 38459
2 45662 48692
2 19515 19577
...

correct output
3
0
23
138
0
...

user output
3
0
23
138
0
...

Test 10

Verdict: ACCEPTED

input
100000 100000 100000
1 61476
1 98132
1 87080
2 4975 73264
...

correct output
1
2
0
1
0
...

user output
1
2
0
1
0
...

Test 11

Verdict: ACCEPTED

input
100000 2000 100000
1 526
1 1201
1 1861
1 10
...

correct output
7956
2212
3687
5073
3005
...

user output
7956
2212
3687
5073
3005
...

Test 12

Verdict: ACCEPTED

input
100000 2000 100000
1 1301
2 83834 94897
1 2000
1 857
...

correct output
8
25
777
615
914
...

user output
8
25
777
615
914
...

Test 13

Verdict: ACCEPTED

input
100000 2000 100000
2 3520 99196
2 18209 43904
2 16177 56088
1 1746
...

correct output
0
0
0
7
33
...

user output
0
0
0
7
33
...

Test 14

Verdict: ACCEPTED

input
100000 2000 100000
2 5289 50318
2 40338 80604
2 6197 44146
2 16086 97494
...

correct output
0
0
0
0
0
...

user output
0
0
0
0
0
...

Test 15

Verdict: ACCEPTED

input
100000 2000 100000
1 546
2 78993 85390
2 13018 76714
1 1284
...

correct output
12
117
2028
2189
88
...

user output
12
117
2028
2189
88
...

Test 16

Verdict: ACCEPTED

input
100000 2000 100000
1 660
1 1867
1 101
1 661
...

correct output
86
1437
2351
2115
4388
...

user output
86
1437
2351
2115
4388
...

Test 17

Verdict: ACCEPTED

input
100000 2000 100000
1 1888
1 329
1 803
1 797
...

correct output
2156
2746
957
666
12216
...

user output
2156
2746
957
666
12216
...

Test 18

Verdict: ACCEPTED

input
100000 2000 100000
1 1053
1 899
1 536
1 641
...

correct output
300
3347
3075
8678
457
...

user output
300
3347
3075
8678
457
...

Test 19

Verdict: ACCEPTED

input
100000 2000 100000
1 1593
1 1168
1 1378
1 1269
...

correct output
290
1105
696
486
779
...

user output
290
1105
696
486
779
...

Test 20

Verdict: ACCEPTED

input
100000 2000 100000
1 898
1 439
1 63
1 722
...

correct output
1000
1618
1933
1433
14440
...

user output
1000
1618
1933
1433
14440
...

Test 21

Verdict: ACCEPTED

input
100000 2000 100000
1 1399
2 207 17310
2 14420 64381
2 70819 76130
...

correct output
12
36
4
18
25
...

user output
12
36
4
18
25
...

Test 22

Verdict: ACCEPTED

input
100000 2000 100000
2 42784 87411
1 285
2 24421 73874
1 1637
...

correct output
0
174
175
189
5
...

user output
0
174
175
189
5
...

Test 23

Verdict: ACCEPTED

input
100000 2000 100000
2 10644 50197
2 37981 97070
2 86512 92284
2 891 66025
...

correct output
0
0
0
0
0
...

user output
0
0
0
0
0
...

Test 24

Verdict: ACCEPTED

input
100000 2000 100000
2 8696 68110
2 5213 10368
2 49176 72628
1 61
...

correct output
0
0
0
942
1464
...

user output
0
0
0
942
1464
...

Test 25

Verdict: ACCEPTED

input
100000 2000 100000
1 887
2 10002 57043
2 51011 65029
2 39221 68055
...

correct output
53
16
32
63
41
...

user output
53
16
32
63
41
...