QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#87295#5750. SiteswapjeffqiAC ✓10ms5500kbC++141.4kb2023-03-12 12:09:502023-03-12 12:09:54

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-03-12 12:09:54]
  • 评测
  • 测评结果:AC
  • 用时:10ms
  • 内存:5500kb
  • [2023-03-12 12:09:50]
  • 提交

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