@satish

ur solution is of o(nlogn) complexty

@ jitendra

suppose p11 and p21 r pointing at index 0 and p12 at 4 and p22 at 1. now
suppose at ths point d s greater than b and c. now u increment p11 and p21.
but it can be a case that a[0] + b[2] is next greatest  value bt t wont
work for ur algo.

On 3 May 2010 00:46, Shishir Mittal <1987.shis...@gmail.com> wrote:

> @Algoose : No, it is not necessary that first n elements must contain A[0]
> or B[0]. For e.g.
> A = {40,30,15,10}
> B = {40,30,15,10}
>
> Required 4 largest values = {40+40, 40+30, 40+30, 30+30}.
>
>
> @Satish:
> A very nice algorithm provided by you.
> Complexity Analysis for the algorithm provided by you:
>
> Creation of max-heap of n elements = O(n).
> Time to add a new element to the heap after extracting the maximum - O(log
> n)
> Overall Complexity = O(n log n)
>
> Regards,
> Shishir
>
>
> On Sun, May 2, 2010 at 10:52 PM, Satish <satish.mit...@gmail.com> wrote:
>
>> This problem can be simplified to a variation of merge part of merge
>> sort algorithm.
>>
>> - Break the set S having n^2 values into n individual arrays of length
>> n, say S1, S2,..Sn, where S1 = [a1+b1, a1+b2,...a1+bn].
>> - One can observe that each Si has entries which are themselves sorted
>> within Si.
>> - Perform merge of S1, S2,..Sn where take the largest values of each
>> Si, and create a heap of these individual max values.
>> - In each step, return the max value from heap and then add the next
>> max value from the Si that had the current max value and add it in the
>> max-heap.
>> - Repeat this step n times and then exit.
>>
>> Time: O(n).
>>
>> Satish
>>
>> On May 2, 5:41 pm, Algoose Chase <harishp...@gmail.com> wrote:
>> > Hi
>> >
>> > will this work ?
>> >
>> > since we need Set S with n pairs of largest values , any such pair
>> within
>> > the set would (always) contain A[0] or B[0] because they maximize the
>> value
>> > of the pair.
>> >
>> > so
>> >
>> > // code snippet
>> > typedef std::vector<int,int> Pairs;
>> >
>> > Pairs.push(A[0],B[0])
>> > int i = 1; // index for ListA
>> > int j = 1; // index for list B
>> > count = 1;
>> > while( count <= n)
>> > {
>> >   if( A[0] + B[j] > B[0] + A[i] )
>> >   {
>> >     Pairs.push(A[0],B[j])
>> >     j++;
>> >   }
>> >   else
>> >   {
>> >      Pairs.Add(A[i],B[0])
>> >      i++;
>> >   }
>> >   count++;
>> >
>> > }
>> >
>> > since there are n items in both the lists, j and i wont go beyond n in
>> the
>> > while loop
>> >
>> >
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algoge...@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to