fork(1) download
  1. mergeInvCount <- function( arr, from = 1, to = length(arr) )
  2. {
  3. if( from == to ) list( invs = 0, sorted = c(arr[from]))
  4. else
  5. {
  6. div <- as.integer( (from + to) / 2 )
  7. left <- mergeInvCount(arr, from, div)
  8. right <- mergeInvCount(arr, div+1, to)
  9. sorted <- vector("integer", length = to - from + 1)
  10. rlen <- length(right$sorted)
  11. llen <- length(left$sorted)
  12. index <- 1
  13. r <- 1
  14. l <- 1
  15. invs <- 0
  16. while(r <= rlen && l <= llen)
  17. {
  18. if(left$sorted[l] > right$sorted[r])
  19. {
  20. sorted[index] <- right$sorted[r]
  21. r <- r + 1
  22. invs <- invs + llen - l + 1
  23. }
  24. else
  25. {
  26. sorted[index] <-left$sorted[l]
  27. l <- l + 1
  28. }
  29. index <- index + 1
  30. }
  31. while(l <= llen){sorted[index]<-left$sorted[l];index<-index+1;l<-l+1;}
  32. while(r <= rlen){sorted[index]<-right$sorted[r];index<-index+1;r<-r+1;}
  33. list(invs = left$invs + right$invs + invs, sorted = sorted)
  34. }
  35. }
  36.  
  37. array <- read.table("IntegerArray.txt")[,1]
  38. result <- mergeInvCount(array)$invs
Runtime error #stdin #stdout #stderr 0.45s 22824KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Error in file(file, "rt") : cannot open the connection
Calls: read.table -> file
In addition: Warning message:
In file(file, "rt") :
  cannot open file 'IntegerArray.txt': No such file or directory
Execution halted