ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Discussion of Problem 1126. Magnetic Storms

Ted It can be solve in O(N+M) [8] // Problem 1126. Magnetic Storms 7 May 2004 13:08
Vlad Veselov Can you tell more about this solution? [4] // Problem 1126. Magnetic Storms 7 May 2004 18:39
I'm not good at English.

A[I] is the Ith number.

First,try to count a array F.

F[I] means the nearest number A[F[I]]:
A[F[I]]>A[I] and F[I]>I.

You can count F in O(N).

Find largest number in [L,R],just find a min I,F[I]>R.

So you can solve the problem in O(N+M).

And this problem is RMQ problem, also have a very hard standard solution in O(N+M).

Edited by author 07.05.2004 20:31
strong!
St.Max [UPML KNU] Re: Can you tell more about this solution? // Problem 1126. Magnetic Storms 3 May 2006 21:56
Good idea. But I had to be very carefully solving it.

Edited by author 04.05.2006 20:00
Thanks, @Ted.
Your idea is brilliant.
I count F[] array with O(N) , used stack.
+  buffered i/o ==> result is very good: AC. 0.001s
Partisan [UPML KNU] Re: It can be solve in O(N+M) [2] // Problem 1126. Magnetic Storms 20 May 2006 19:48
There is an interesting situation here: when I declared arrays a and f with size 1..25000, I got WA#2. When I changed them to 1..25001, I got AC...
BlindButcher Re: It can be solve in O(N+M) [1] // Problem 1126. Magnetic Storms 22 Oct 2008 17:47
I have used rather simple method, I have organized four stacks, first two to make a queue of M size, and others to store max elements of queue, by this way you can find elements in constant time. Very useful for Java, you have Class Stack.
Mewtwo Re: It can be solve in O(N+M) // Problem 1126. Magnetic Storms 20 Mar 2016 18:58
BlindButcher wrote 22 October 2008 17:47
I have used rather simple method, I have organized four stacks, first two to make a queue of M size, and others to store max elements of queue, by this way you can find elements in constant time. Very useful for Java, you have Class Stack.

Thanks for sharing the idea...
:)