-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInversionOfArray.cpp
More file actions
46 lines (39 loc) · 1.11 KB
/
Copy pathInversionOfArray.cpp
File metadata and controls
46 lines (39 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//https://www.codingninjas.com/codestudio/problems/615?topList=striver-sde-sheet-problems&utm_source=striver&utm_medium=website&leftPanelTab=1
#include <bits/stdc++.h>
long long merge(long long input[],long long t[], long long si,long long mid, long long ei){
long long i=si,j=mid+1,k=si, ic=0;
while(i<=mid && j<=ei){
if(input[i]<=input[j]){
t[k++]=input[i++];
}
else{
t[k++]=input[j++];
ic=ic+(mid-i+1);
}
}
while(i<=mid){
t[k++]=input[i++];
}
while(j<=ei){
t[k++]=input[j++];
}
for(i=si;i<=ei;i++)
input[i]=t[i];
return ic;
}
long long sort(long long input[], long long t[], long long si, long long ei){
long long mid, ic=0;
if(si<ei){
mid=(si+ei)/2;
ic+=sort(input,t,si,mid);
ic+=sort(input,t,mid+1,ei);
ic+=merge(input,t,si,mid,ei);
}
return ic;
}
long long getInversions(long long *input, long long size){
// Write your code here.
long long si=0, ei=size-1;
long long t[size];
return sort(input,t,si,ei);
}