|
|
back to board:(( I`m going to get MAD what`s wrong indeed? (+) Posted by Pasha 19 Mar 2003 14:18 Const Maxn = 130002; Var N, I, X, L, Ans : LongInt; P : Array[0..MaxN] of LongInt; Function GCD(X,Y:LongInt):LongInt; Begin If Y>X Then GCD:=GCD(Y,X) Else If Y=0 Then GCD:=X Else GCD:=GCD(Y, X MOD Y); end; begin Readln(N); For I := 1 To N Do Begin Read(X); P[X]:=I; End; X:=0; Ans:=0; For I := 1 To MaxN Do If P[I]>0 Then Begin Inc(X); L:=Abs(P[I]-X); If L>0 Then If Ans>0 Then Ans:=GCD(Ans,L) Else Ans:=L; End; If Ans=0 Then WriteLn(N-1) Else WriteLn(Ans-1); end. Re: :(( I`m going to get MAD what`s wrong indeed? (+) Posted by hajime 19 Mar 2003 14:39 > Const > Maxn = 130002; > Var > N, I, X, L, Ans : LongInt; > P : Array[0..MaxN] of LongInt; > > Function GCD(X,Y:LongInt):LongInt; > Begin > If Y>X Then > GCD:=GCD(Y,X) > Else > If Y=0 Then > GCD:=X > Else > GCD:=GCD(Y, X MOD Y); > end; > > begin > Readln(N); > For I := 1 To N Do > Begin > Read(X); > P[X]:=I; > End; > X:=0; > Ans:=0; > For I := 1 To MaxN Do > If P[I]>0 Then > Begin > Inc(X); > L:=Abs(P[I]-X); > If L>0 Then > If Ans>0 Then > Ans:=GCD(Ans,L) > Else > Ans:=L; > End; > If Ans=0 Then > WriteLn(N-1) > Else > WriteLn(Ans-1); > end. Sorting may be also in descending order Thanks a lot for your help Posted by Pasha 19 Mar 2003 16:20 My mail address is aidin_n7@hotmai.com I will glad to meet you more Best Aidin Re: Thanks a lot for your help Const Maxn = 1302; Var N, I, X, L, Ans,x2,l2,ans2: LongInt; P : Array[0..MaxN] of LongInt; Function GCD(X,Y:LongInt):LongInt; Begin If Y>X Then GCD:=GCD(Y,X) Else If Y=0 Then GCD:=X Else GCD:=GCD(Y, X MOD Y); end; begin Readln(N); For I := 1 To N Do Begin Read(X); P[X]:=I; End; X:=0; x2:=n; Ans:=0; ans2:=0; For I := 1 To MaxN Do If P[I]>0 Then Begin Inc(X); dec(x2); L:=Abs(P[I]-X); l2:=abs(p[i]-x2); If L>0 Then If Ans>0 Then Ans:=GCD(Ans,L) Else Ans:=L; If L2>0 Then If Ans2>0 Then Ans2:=GCD(Ans2,L2) Else Ans2:=L2; End; if ans=0 then ans:=n-1 else ans:=ans-1; if ans2=0 then ans2:=n-1 else ans2:=ans2-1; if ans>ans2 then writeln(ans) else writeln(ans2); end. sorry... i used some of your code.. |
|
|