比赛 |
Asm_Def战记之透明计算网络 |
评测结果 |
WTWTTTTWTT |
题目名称 |
Asm_Def排兵布阵 |
最终得分 |
0 |
用户昵称 |
typhon |
运行时间 |
7.664 s |
代码语言 |
Pascal |
内存使用 |
65.01 MiB |
提交时间 |
2015-11-01 11:59:19 |
显示代码纯文本
- var a:array[1..4000000] of boolean;
- x:array[1..4000000] of longint;
- y:array[1..4000000] of longint;
- num:array[1..4000000] of longint;
- last:array[1..4000000] of longint;
- n,i,u,j,s:longint;total:qword;
-
- function dizheng:boolean;
- var i,j:longint;
- begin
- for i:=1 to n-1 do
- for j:=i to n do
- if last[i]>last[j] then exit(false);
- exit(true);
- end;
- procedure print;
- var i,a,b:longint;r,t,w:string;v:boolean;
-
- begin
- fillchar(last,sizeof(last),0);
- v:=true;
- for i:=1 to n do
- for j:=s downto 1 do
- if x[j]=i then begin last[i]:=j;break;end;
- if dizheng then total:=total+1;
-
- end;
-
- procedure try(i:longint);
- var j:longint;
- begin
- for j:=1 to s do
- if a[j]=true then begin
- x[i]:=y[j];
- a[j]:=false;
- if i<s
- then try(i+1)
- else print;
- a[j]:=true;
- end;
- end;
- procedure same;
- begin
- for i:=1 to n do
- if num[1]<>1 then exit;
- writeln(1);
- halt;
- end;
-
-
- begin
- assign(input,'asm_formation.in');
- reset(input);
- assign(output,'asm_formation.out');
- rewrite(output);
-
- total:=0;readln(n);
- for i:=1 to n do begin
- read(num[i]); s:=s+num[i]; end;
- u:=1;
- same;
- { for i:=1 to n do
- begin
- for j:=1 to num[i] do
- y[u]:=i;
- u:=u+1;
- end; }
- for i:=1 to n do
- for j:=1 to num[i] do
- begin
- y[u]:=i;
- u:=u+1;
- end;
- for i:=1 to s do
- a[i]:=true;
- try(1);
- total:=total div 4;
- total:=total mod 998244353;
- writeln(total);
- close(input);
- close(output);
- end.