Submit | All submissions | Best solutions | Back to list |
INVCNT - Inversion Count |
Let A[0 ... n - 1] be an array of n distinct positive integers. If i < j and A[i] > A[j] then the pair (i, j) is called an inversion of A. Given n and an array A your task is to find the number of inversions of A.
Input
The first line contains t, the number of testcases followed by a blank space. Each of the t tests start with a number n (n ≤ 200000). Then n + 1 lines follow. In the ith line a number A[i - 1] is given (A[i - 1] ≤ 107). The (n + 1)th line is a blank space.
Output
For every test output one line giving the number of inversions of A.
Example
Input: 2 3 3 1 2 5 2 3 8 6 1 Output: 2 5
Added by: | Paranoid Android |
Date: | 2010-03-06 |
Time limit: | 3.599s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All except: PERL6 |
hide comments
|
||||||||||||||
2014-07-01 07:32:16 kelaseek
BST 1.07 MERGE SORT:0.73 |
||||||||||||||
2014-05-11 14:05:03 excursionist
very easy :D AC ;) time(.c) << time(.cpp) |
||||||||||||||
2014-05-10 13:36:33 Mr Tambourine Man
use long long int..that cost me two WA |
||||||||||||||
2014-03-03 09:18:07 californiagurl
didn't do anything special for duplicates.....but got AC in 2 sec :) but i'd still like to know how can i improve on the time limit,,, lot many users got it done within 1 sec. Last edit: 2014-03-03 09:24:44 |
||||||||||||||
2014-02-20 13:12:06 Ajay Prasadh
Check for duplicate numbers finally ac ! :D |
||||||||||||||
2014-02-04 07:52:44 Anubhav Balodhi
good Inversion problem... AC :-D |
||||||||||||||
2013-12-24 09:40:32 rahul kumar
did it using merge sort...easy one |
||||||||||||||
2013-12-12 16:51:56 Achmet ibn Rashid
Tried both merge sort and binary indexed (aka fenwick) trees; got AC with both well within bounds, but merge sort was a lot faster: * NlogN < NlogVmax -- Nmax is 2 * 10^5, Vmax is 10^7 * you can use the actual N, you don't need to use Nmax, but you need to use Vmax in the BIT for insertion if you don't read the whole vector first. * merge sort should be more cache friendly. * resetting the BIT is O(V); even with memset I suspect that also eats a lot of time, even when clearing only the dirty region. Edit: there are no duplicate numbers btw; the problem statement says so and my BIT solution wouldn't have worked if there were. Last edit: 2013-12-12 16:53:51 |
||||||||||||||
2013-12-12 16:02:28 Achmet ibn Rashid
Last edit: 2013-12-12 16:56:11 |
||||||||||||||
2013-10-17 06:30:56 Bo MA
Take care about two things: 1. The output would exceed INT_MAX, use long long instead 2. Duplicate numbers |