| Task: | Witch game |
| Sender: | Sanja |
| Submission time: | 2017-01-22 13:32:17 +0200 |
| Language: | Pascal |
| Status: | READY |
| Result: | 47 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 23 |
| #2 | ACCEPTED | 24 |
| #3 | WRONG ANSWER | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | 1 | details |
| #2 | ACCEPTED | 0.04 s | 1 | details |
| #3 | ACCEPTED | 0.04 s | 1 | details |
| #4 | ACCEPTED | 0.04 s | 1 | details |
| #5 | ACCEPTED | 0.04 s | 1 | details |
| #6 | ACCEPTED | 0.04 s | 2 | details |
| #7 | ACCEPTED | 0.03 s | 2 | details |
| #8 | ACCEPTED | 0.04 s | 2 | details |
| #9 | ACCEPTED | 0.03 s | 2 | details |
| #10 | ACCEPTED | 0.04 s | 2 | details |
| #11 | ACCEPTED | 0.06 s | 3 | details |
| #12 | ACCEPTED | 0.07 s | 3 | details |
| #13 | ACCEPTED | 0.06 s | 3 | details |
| #14 | ACCEPTED | 0.07 s | 3 | details |
| #15 | WRONG ANSWER | 0.07 s | 3 | details |
Compiler report
/usr/bin/ld.bfd: warning: output/link.res contains output sections; did you forget -T?
Code
Const MAX_N = 100000;
Type tEdge = record
dest , next : LongInt;
end;
var E : array [ 1 .. MAX_N ] of tEdge;
ee : LongInt;
Link : array [ 1 .. MAX_N ] of LongInt;
procedure addEdge ( u , v : LongInt ) ;
begin
inc ( ee ) ;
E[ee].dest := v;
E[ee].next := Link[u];
Link[u] := ee;
end;
var N : LongInt;
A , Cnt : Array [ 1 .. 100000 ] of LongInt;
Cycle : LongInt;
Ans : Int64;
var i : LongInt;
cCycle : LongInt;
cEdge : LongInt;
cVertex : LongINt;
cAns : Int64;
tmp : LongInt;
begin
readLn ( N ) ;
for i := 1 to N do
read ( A[i] );
Cycle := 0 ;
for i := 1 to N do
if ( i = A[ A[i] ] ) then
inc ( Cycle );
Cycle := Cycle div 2;
for i := 1 to N do
begin
inc ( Cnt[ A[i] ] );
addEdge ( A[i] , i );
end;
Ans := 0 ;
for i := 1 to N do
begin
cEdge := ee ;
cVertex := N-1; // I
if ( i = A[ A[i] ] ) then
begin
//writeLn ( 'badabum -ts' );
cCycle := Cycle - 1;
end
else
begin
dec ( cVertex ) ; // I --> x
dec ( cEdge , Cnt [ A[i] ] );
if ( A [ A[A[i]]] <> I ) then
dec ( cEdge );
end;
tmp := Link[i];
while ( tmp > 0 ) do
begin
dec ( cVertex ) ; // E[tmp].dest
dec ( cEdge ) ; // E[tmp].dest -> I
dec ( cEdge , Cnt [ E[tmp].dest ] ); // xxxx -> E[tmp].dest
tmp := E[tmp].next;
end;
cAns := ( Int64(cVertex)*(cVertex-1) div 2 ) - cEdge + cCycle;
//writeLn ( 'Witch ' , i , ' : ' , cAns ) ;
//writeLn ( 'V = ' , cVertex , ' ; E = ' , cEdge , ' ; C = ' , cCycle ) ;
Ans += cAns;
end;
writeLn ( Ans div 3 ) ;
end.Test details
Test 1
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 100 2 1 4 3 6 5 8 7 10 9 12 11 14 ... |
| correct output |
|---|
| 156800 |
| user output |
|---|
| 156800 |
Test 2
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 100 2 3 4 5 6 7 8 9 10 11 12 13 14... |
| correct output |
|---|
| 152000 |
| user output |
|---|
| 152000 |
Test 3
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 100 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 156849 |
| user output |
|---|
| 156849 |
Test 4
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 100 2 3 1 5 6 4 8 9 7 11 12 10 14 ... |
| correct output |
|---|
| 151968 |
| user output |
|---|
| 151968 |
Test 5
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 100 8 98 100 62 42 36 95 70 22 49 ... |
| correct output |
|---|
| 152040 |
| user output |
|---|
| 152040 |
Test 6
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 5000 2 1 4 3 6 5 8 7 10 9 12 11 14 ... |
| correct output |
|---|
| 20808340000 |
| user output |
|---|
| 20808340000 |
Test 7
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 5000 2 3 4 5 6 7 8 9 10 11 12 13 14... |
| correct output |
|---|
| 20795850000 |
| user output |
|---|
| 20795850000 |
Test 8
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 5000 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 20808342499 |
| user output |
|---|
| 20808342499 |
Test 9
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 5000 2 3 1 5 6 4 8 9 7 11 12 10 14 ... |
| correct output |
|---|
| 20795848337 |
| user output |
|---|
| 20795848337 |
Test 10
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 5000 283 2880 2565 3289 4160 936 39... |
| correct output |
|---|
| 20795852465 |
| user output |
|---|
| 20795852465 |
Test 11
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 100000 2 1 4 3 6 5 8 7 10 9 12 11 14 ... |
| correct output |
|---|
| 166656666800000 |
| user output |
|---|
| 166656666800000 |
Test 12
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 100000 2 3 4 5 6 7 8 9 10 11 12 13 14... |
| correct output |
|---|
| 166651667000000 |
| user output |
|---|
| 166651667000000 |
Test 13
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 100000 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 166656666849999 |
| user output |
|---|
| 166656666849999 |
Test 14
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 100000 2 3 1 5 6 4 8 9 7 11 12 10 14 ... |
| correct output |
|---|
| 166651666966668 |
| user output |
|---|
| 166651666966668 |
Test 15
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| 100000 186 62491 95379 37431 88427 93... |
| correct output |
|---|
| 166651667250100 |
| user output |
|---|
| 166651667205106 |
