fork download
  1. printf <- function(...) cat(sprintf(...))
  2.  
  3. f <- function(p, n, r)
  4. {
  5. if (p < 1 | p > n | r <= 0) return()
  6. r <- min(n, r)
  7. a <- r %/% 2
  8. b <- (r - 1) %/% 2
  9. min(n - a, max(1 + b, p)) + -b:a
  10. }
  11.  
  12. Q <- list(
  13. c(1, 10, 5), c(3, 10, 5), c(5, 10, 5), c(8, 10, 5), c(10, 10, 5),
  14. c(5, 10, 0), c(5, 10, 4), c(0, 10, 5), c(11, 10, 5), c(1, 3, 5)
  15. )
  16.  
  17. for (q in Q) {
  18. printf("p = %d, n = %d, r = %d\n", q[1], q[2], q[3])
  19. printf("[%s]\n", toString(f(q[1], q[2], q[3])))
  20. printf("\n")
  21. }
Success #stdin #stdout 0.26s 40532KB
stdin
Standard input is empty
stdout
p = 1, n = 10, r = 5
[1, 2, 3, 4, 5]

p = 3, n = 10, r = 5
[1, 2, 3, 4, 5]

p = 5, n = 10, r = 5
[3, 4, 5, 6, 7]

p = 8, n = 10, r = 5
[6, 7, 8, 9, 10]

p = 10, n = 10, r = 5
[6, 7, 8, 9, 10]

p = 5, n = 10, r = 0
[]

p = 5, n = 10, r = 4
[4, 5, 6, 7]

p = 0, n = 10, r = 5
[]

p = 11, n = 10, r = 5
[]

p = 1, n = 3, r = 5
[1, 2, 3]