QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#87295 | #5750. Siteswap | jeffqi | AC ✓ | 10ms | 5500kb | C++14 | 1.4kb | 2023-03-12 12:09:50 | 2023-03-12 12:09:54 |
Judging History
answer
#include<bits/stdc++.h>
#define rep(i,a,b) for (int i = (a); i <= (b); ++i)
#define drep(i,a,b) for (int i = (a); i >= (b); --i)
#define LL long long
#define pii pair<int,int>
#define pll pair<LL,LL>
#define fi first
#define se second
#define eb emplace_back
#define mp make_pair
using namespace std;
LL read() {
LL x = 0,y = 1; char ch = getchar(); while (!isdigit(ch)) {if (ch == '-') y = -y; ch = getchar();}
while (isdigit(ch)) {x = x*10+ch-'0'; ch = getchar();} return x*y;
}
namespace qiqi {
const int N = 1e5+5,M = 4; int n,a[N],c[M];
struct DSU {
int fa[N],c[N]; LL sum[N];
void init(int n) {
rep(i,1,n) {
fa[i] = i; sum[i] = a[i];
c[i] = i&1 ? 1 : 2;
}
}
int find(int x) {return x == fa[x] ? x : fa[x] = find(fa[x]);}
void merge(int x,int y) {
x = find(x); y = find(y); if (x == y) return;
fa[y] = x; if (c[y] == 3) c[x] = 3; sum[x] += sum[y];
}
} dsu;
void main() {
n = read();
rep(i,1,n) a[i] = read();
dsu.init(n);
rep(i,1,n) {
dsu.merge(i,(i+a[i]-1)%n+1);
if (a[i]&1) {
dsu.c[dsu.find(i)] = 3;
}
}
rep(i,1,M-1) c[i] = 0;
rep(i,1,n) if (i == dsu.fa[i]) {
int x = dsu.sum[i]/n;
if (!(n&1) || dsu.c[i] == 3) c[dsu.c[i]] += x;
else {
c[dsu.c[i]] += (x+1)/2;
c[dsu.c[i]^3] += x/2;
}
}
rep(i,1,M-1) printf("%d ",c[i]); puts("");
}
}
int main() {
int T = read(); while (T--) qiqi::main(); return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 3528kb
input:
3 3 1 5 0 6 4 6 4 0 4 0 2 6 4
output:
0 0 2 2 1 0 3 2 0
result:
ok 9 numbers
Test #2:
score: 0
Accepted
time: 0ms
memory: 3580kb
input:
100 10 94 8 4 52 7 53 16 96 29 1 10 23 35 96 34 86 39 16 72 63 96 10 51 2 46 21 15 31 41 28 42 83 10 75 67 64 88 46 98 3 17 14 98 10 24 77 54 48 16 37 23 88 99 84 10 52 93 44 87 84 80 37 22 73 28 10 35 80 96 60 75 19 100 63 54 88 10 38 49 63 68 29 67 3 57 68 48 10 89 57 51 21 61 16 100 73 99 83 10 6...
output:
2 0 34 0 0 56 0 0 36 0 0 57 4 0 51 0 13 47 25 14 28 0 0 49 10 0 55 0 0 30 9 0 48 0 0 48 15 11 22 0 7 34 9 0 39 4 7 26 9 0 56 6 10 49 6 5 32 0 0 45 7 4 44 8 0 46 7 4 60 24 19 0 0 0 57 0 13 28 9 1 37 0 0 58 7 0 38 0 0 40 6 6 21 3 9 31 3 10 51 7 9 28 19 10 39 0 3 51 ...
result:
ok 300 numbers
Test #3:
score: 0
Accepted
time: 2ms
memory: 3704kb
input:
100 54 386 856 526 874 268 682 718 686 344 116 412 25 82 99 203 496 2 949 757 584 713 137 518 782 485 769 852 483 906 918 152 211 561 355 527 591 585 506 57 49 929 767 317 287 475 186 267 199 227 390 124 373 309 444 85 491 676 471 547 85 660 974 510 349 341 89 557 936 180 632 919 810 887 498 426 644...
output:
0 17 437 16 16 485 0 0 559 4 2 413 0 7 490 1 1 510 0 0 424 0 0 514 0 38 386 1 0 473 0 0 667 7 7 507 22 0 490 0 41 472 0 0 580 0 0 526 0 0 441 0 55 423 0 0 467 18 18 523 0 0 517 0 0 565 0 0 486 0 0 492 0 0 495 21 21 519 2 6 437 47 54 302 0 16 510 21 0 482 82 82 358 3 31...
result:
ok 300 numbers
Test #4:
score: 0
Accepted
time: 10ms
memory: 5500kb
input:
1 100000 173636392 284273077 698424898 5611435 902118118 237290573 833213168 776939793 5890016 899034976 776348831 518211565 717077869 409849809 602678259 232306557 142010208 148869327 319416709 814019507 368419097 599868858 338329488 88679485 555698506 294475578 715560768 893338866 371965797 381639...
output:
0 0 500204201
result:
ok 3 number(s): "0 0 500204201"
Test #5:
score: 0
Accepted
time: 9ms
memory: 5144kb
input:
2 27355 460071504 378603706 534707902 580629932 984454706 47518920 863592507 534539132 32710375 333680435 834350586 804715694 851485226 611532912 367032640 220290347 971674730 390231297 220133525 423772279 762042987 778306763 418668366 841875081 59148109 99723573 442421595 652768507 141655948 405219...
output:
0 0 501084219 5102 5102 500096109
result:
ok 6 numbers