QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#797689 | #9426. Relearn through Review | boringhacker | WA | 83ms | 5748kb | C11 | 1.5kb | 2024-12-03 16:36:46 | 2024-12-03 16:36:47 |
Judging History
answer
#include <stdio.h>
#include <stdlib.h>
#define L 19 // L = ceil(log2(n + 1))
#define N 300000
int max(int i, int j) { return i < j ? j : i; }
int gcd(int i, int j) { return j ? gcd(j, i % j) : i; }
int *ff[L], l2[N + 1];
int query(int l, int r) {
int h = l2[r - l];
return gcd(ff[h][l], ff[h][r - (1 << h)]);
}
int main() {
int n, k, t;
int i, j;
int cnt, cnt_;
static int aa[N], pp[N], qq[N];
static int pg[N], sg[N];
scanf("%d", &t);
while (t--) {
int g;
scanf("%d%d", &n, &k);
for (i = 0; i < n; ++i)
scanf("%d", aa + i);
l2[0] = -1;
for (i = 1; i <= n; ++i)
l2[i] = l2[i / 2] + 1;
ff[0] = (int *) malloc(n * sizeof *ff[0]);
for (i = 0; i < n; ++i)
ff[0][i] = aa[i] + k;
for (i = 1; (1 << i) <= n; ++i) {
ff[i] = (int *) malloc((n - (1 << i) + 1) * sizeof *ff[i]);
for (j = 0; j + (1 << i) <= n; ++j)
ff[i][j] = gcd(ff[i - 1][j], ff[i - 1][j + (1 << (i - 1))]);
}
cnt = cnt_ = 0;
pg[0] = aa[0], sg[n - 1] = aa[n - 1];
for (i = 1; i < n; ++i)
pg[i] = gcd(pg[i - 1], aa[i]);
for (i = n - 1; i--;)
sg[i] = gcd(sg[i + 1], aa[i]);
for (i = 0; i < n - 1; ++i)
if (pg[i] != pg[i + 1])
pp[cnt++] = i;
for (i = n; --i;)
if (sg[i] != sg[i - 1])
qq[cnt_++] = i;
g = sg[0];
for (i = 0; i < cnt; ++i)
for (j = 0; j < cnt_; ++j)
if (pp[i] + 1 < qq[j])
g = max(g, gcd(pg[pp[i]], gcd(sg[qq[j]], query(pp[i] + 1, qq[j]))));
printf("%d\n", g);
for (i = 0; (1 << i) <= n; ++i)
free(ff[i]);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 5740kb
input:
2 6 2 5 3 13 8 10 555 3 0 3 6 9
output:
5 3
result:
ok 2 lines
Test #2:
score: -100
Wrong Answer
time: 83ms
memory: 5748kb
input:
100000 1 608611451460421713 33155506392034032 1 743116173559300609 6138108577573005 7 364454564010802125 657035115675878115 657035115675878115 657035115675878115 657035115675878115 657035115675878115 292580551665075990 657035115675878115 4 316648374341335221 365788422120542814 182894211060271407 731...
output:
-455578896 -983832435 -1 1 3 -346003050 1 1 1757711864 3 -2107693990 1975007935 -1462444337 2 1055879859 -1 2 227614603 3 1 -862455600 -1 1 -1 -1 1345840113 1 -2003917331 1 -1 -1256621829 1 -284788640 1307678111 1 947590817 -2 -1 -2 1759884193 22345428 -1 1 -1200216024 4 -1475339071 1 1789851508 -1 ...
result:
wrong answer 1st lines differ - expected: '641766957852455745', found: '-455578896'