CSES - E4590 2016 5 - Results
Submission details
Task:GCD queries
Sender:Ollie
Submission time:2016-10-15 14:19:30 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1UNKNOWN--details
#2UNKNOWN--details
#3UNKNOWN--details
#4UNKNOWN--details
#5UNKNOWN--details
#6UNKNOWN--details
#7UNKNOWN--details
#8UNKNOWN--details
#9UNKNOWN--details
#10UNKNOWN--details
#11UNKNOWN--details
#12UNKNOWN--details
#13UNKNOWN--details
#14UNKNOWN--details
#15UNKNOWN--details
#16UNKNOWN--details
#17UNKNOWN--details
#18UNKNOWN--details
#19UNKNOWN--details
#20UNKNOWN--details
#21UNKNOWN--details
#22UNKNOWN--details
#23UNKNOWN--details
#24UNKNOWN--details
#25UNKNOWN--details
#26UNKNOWN--details
#27UNKNOWN--details
#28UNKNOWN--details
#29UNKNOWN--details
#30UNKNOWN--details
#31UNKNOWN--details
#32UNKNOWN--details
#33UNKNOWN--details

Code

#include <bits/stdc++.h>

#define _ ios_base::sync_with_stdio(0);cin.tie();
#define ll long long
#define vi vector<int>
#define pb push_back
#define pii pair<int, int>
#define vpii vector<pii>
#define N (2<<20)
#define C 1234234234
using namespace std;

int gcd(int a, int b) { return b == 0 ? a : gcd(b, a%b); }

int t[2*N];

void c(int x, int k) {
  x += N;
  t[x] = k;
  x /= 2;
  while(x > 0) {
    int l = t[2*x];
    int r = t[2*x+1];
    if(l==C)
      t[x] = r;
    else if(r==C)
      t[x] = l;
    else
      t[x] = gcd(l,r);
    x /= 2;
  }
}

int g(int a, int b) {
  a += N; b += N;
  int cv = C;
  while(a <= b) {
    //cout << a << "|" << b << endl;
    if(a%2 == 1) {
      if(cv==C) cv=t[a];
      else cv=gcd(cv,t[a]);
      a++;
    }
    if(b%2 == 0) {
      if(cv==C) cv=t[b];
      else cv=gcd(cv,t[b]);
      b--;
    }
    a /= 2; b /= 2;
  }
  //cout << "-----" << endl;
  return cv;
}

int main() { _
  int n, q;
  cin >> n >> q;
  for(int i=0;i<2*N;i++) t[i]=C;
  for(int i=0;i<n;i++) {
    int x; cin >> x;
    c(i, x);
  }
  //for(int i=1;i<2*N;i++) cout << t[i] << endl;
  for(int i=0;i<q;i++) {
    char t; cin >> t;
    int a,b;
    cin >> a >> b;
    if(t == 'q') {
      a--; b--;
      cout << g(a, b) << endl;
    } else {
      c(a-1, b);
    }
  }
  return 0;
} 

Test details

Test 1

Verdict: UNKNOWN

input
10 10
706925441 321605763 203167195 ...

correct output
1
1
223839214
1
110092684
...

user output
(not available)

Test 2

Verdict: UNKNOWN

input
100000 10000
1 1 1 1 1 1 1 1 1 1 1 32 32 32...

correct output
720
28800
11059200
7200
184320
...

user output
(not available)

Test 3

Verdict: UNKNOWN

input
100000 100000
1 54 4860 4860 19440 933120 93...

correct output
155520
7776000
25920
2880
194400000
...

user output
(not available)

Test 4

Verdict: UNKNOWN

input
100000 100000
1 288 288 864 864 62208 186624...

correct output
30720
3
737280
144000
3
...

user output
(not available)

Test 5

Verdict: UNKNOWN

input
100000 100000
1 1 10 2700 16200 162000 11340...

correct output
34560
2
2
2
1
...

user output
(not available)

Test 6

Verdict: UNKNOWN

input
100000 100000
1 1620 4536000 108864000 60963...

correct output
43200
609638400
86400
241920
1
...

user output
(not available)

Test 7

Verdict: UNKNOWN

input
100000 100000
1 3 3 3 90 68040 3402000 47628...

correct output
29030400
1209600
5
1
2
...

user output
(not available)

Test 8

Verdict: UNKNOWN

input
100000 100000
1 1 72 3600 28800 31104000 124...

correct output
2304000
2304000
2304000
691200
1152000
...

user output
(not available)

Test 9

Verdict: UNKNOWN

input
100000 100000
1 2 2 2 18 1008 1008 2016 1209...

correct output
1244160
1344
14515200
120960
103680
...

user output
(not available)

Test 10

Verdict: UNKNOWN

input
100000 100000
1 7 42 17640 7056000 42336000 ...

correct output
138240
1
60480000
9
1
...

user output
(not available)

Test 11

Verdict: UNKNOWN

input
100000 100000
1 80 3840 19200 829440000 6635...

correct output
1555200
6220800
4665600
995328000
18662400
...

user output
(not available)

Test 12

Verdict: UNKNOWN

input
100000 100000
1 1 5 300 27000 135000 1080000...

correct output
2880000
151200
1440
34992000
120960000
...

user output
(not available)

Test 13

Verdict: UNKNOWN

input
100000 100000
1 12 504 1512 36288 1016064 81...

correct output
163296
254016
381024
7056
12700800
...

user output
(not available)

Test 14

Verdict: UNKNOWN

input
100000 100000
1 7200 3499200 31492800 559872...

correct output
8164800
2
576
2
1632960
...

user output
(not available)

Test 15

Verdict: UNKNOWN

input
100000 100000
1 8 20160 483840 7741440 32514...

correct output
1524096
82944
46448640
10368
2903040
...

user output
(not available)

Test 16

Verdict: UNKNOWN

input
100000 100000
1 80 1600 96000 699840000 2332...

correct output
3
36578304
116688600
10450944
3
...

user output
(not available)

Test 17

Verdict: UNKNOWN

input
100000 100000
1 630 630 4410 31752000 362880...

correct output
711244800
48384
227598336
3386880
2
...

user output
(not available)

Test 18

Verdict: UNKNOWN

input
100000 100000
1 8 1440 1440 11520 34560 3456...

correct output
2903040
40320
2257920
2520
60963840
...

user output
(not available)

Test 19

Verdict: UNKNOWN

input
100000 100000
1 24 4032 4032 120960 4354560 ...

correct output
17781120
51840
2540160
3628800
622080
...

user output
(not available)

Test 20

Verdict: UNKNOWN

input
100000 100000
1 3645 127575 24494400 4898880...

correct output
7776
1306368
92588832
1866240
163296
...

user output
(not available)

Test 21

Verdict: UNKNOWN

input
100000 100000
1 10 20 40 80000 80000 2400000...

correct output
18144
746496
489888
163296
24004512
...

user output
(not available)

Test 22

Verdict: UNKNOWN

input
100000 100000
1 1 90 3240 19440 1944000 2449...

correct output
1134000
22680000
12600
12600
9
...

user output
(not available)

Test 23

Verdict: UNKNOWN

input
100000 100000
1 1 1 400 80000 80000 960000 8...

correct output
62208000
12960000
17280
186624000
345600
...

user output
(not available)

Test 24

Verdict: UNKNOWN

input
100000 100000
1 4 32 768 414720 58060800 870...

correct output
4147200
82944
41472
12288
82944
...

user output
(not available)

Test 25

Verdict: UNKNOWN

input
100000 100000
1 81 648 419904 6718464 362797...

correct output
1680
2
8
1290240
8
...

user output
(not available)

Test 26

Verdict: UNKNOWN

input
100000 100000
1 1 120 120 960 960 960 5760 6...

correct output
28800
233280000
28800
28800
403200
...

user output
(not available)

Test 27

Verdict: UNKNOWN

input
100000 100000
1 2352 37632 37632 790272 1896...

correct output
6451200
2400
245760
34560
30720
...

user output
(not available)

Test 28

Verdict: UNKNOWN

input
100000 100000
1 16 896 537600 37632000 26342...

correct output
1
1
3317760
1
115200
...

user output
(not available)

Test 29

Verdict: UNKNOWN

input
100000 100000
1 48 419904 1259712 357128352 ...

correct output
21600
8640
1440
21600
21600
...

user output
(not available)

Test 30

Verdict: UNKNOWN

input
100000 100000
1 32 7680 537600 5376000 37632...

correct output
105840
241920
15120
18522000
24192
...

user output
(not available)

Test 31

Verdict: UNKNOWN

input
4 3
2 4 6 3
q 1 4
q 1 3
q 3 4

correct output
1
2
3

user output
(not available)

Test 32

Verdict: UNKNOWN

input
4 4
2 4 6 3
u 2 12
q 1 4
q 1 3
...

correct output
1
2
6

user output
(not available)

Test 33

Verdict: UNKNOWN

input
1 3
1
q 1 1
u 1 2
q 1 1

correct output
1
2

user output
(not available)