fork download
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. #include <inttypes.h>
  4.  
  5. size_t read_size(void) {
  6. size_t n;
  7. scanf("%zu", &n);
  8. return n;
  9. }
  10.  
  11. int64_t read_int64(void) {
  12. int64_t n;
  13. scanf("%" SCNd64, &n);
  14. return n;
  15. }
  16.  
  17. int64_t** marray_read(size_t* rows, size_t* sizes[]) {
  18. size_t n = read_size();
  19. *rows = n;
  20.  
  21. *sizes = malloc(n * sizeof(size_t));
  22. int64_t** array = malloc(n * sizeof(int64_t*));
  23.  
  24. for (size_t i = 0; i < n; i++) {
  25. size_t m = read_size();
  26. (*sizes)[i] = m;
  27. array[i] = malloc(m * sizeof(int64_t));
  28. for (size_t j = 0; j < m; j++) {
  29. array[i][j] = read_int64();
  30. }
  31. }
  32. for (size_t i = 0; i < n; i++) {
  33. printf("%zu ", (*sizes)[i]);
  34. }
  35. printf("\n");
  36. return array;
  37. }
  38.  
  39. void perform(void) {
  40. size_t rows;
  41. size_t* sizes;
  42. int64_t** marray = marray_read(&rows, &sizes);
  43. for (size_t i = 0; i < rows; i++) {
  44. printf("\n%zu:", sizes[i]);
  45. for (size_t j = 0; j < sizes[i]; j++) {
  46. printf(" %" SCNd64, marray[i][j]);
  47. }
  48. }
  49.  
  50. free(sizes);
  51.  
  52. for (size_t i = 0; i < rows; i++) {
  53. free(marray[i]);
  54. }
  55.  
  56. free(marray);
  57. }
  58.  
  59. int main(void) {
  60. perform();
  61. return 0;
  62. }
  63.  
Success #stdin #stdout 0s 4780KB
stdin
5 1 15 2 16 17 3 18 19 20 4 21 22 23 24 5 25 26 27 28 29 30
stdout
1 2 3 4 5 

1: 15
2: 16 17
3: 18 19 20
4: 21 22 23 24
5: 25 26 27 28 29