fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define DEBUG
  5.  
  6. size_t find_dup(int arr[][2], size_t n)
  7. {
  8. for (size_t i = 0; i < n; i++)
  9. {
  10. for (size_t j = i + 1; j < n; j++)
  11. {
  12. if (arr[i][0] == arr[j][0] && arr[i][1] == arr[j][1])
  13. {
  14. memcpy(&arr[j][0], &arr[j + 1][0], (n - j) * sizeof(int) * 2);
  15. memset(&arr[--n][0], 0, sizeof(int) * 2);
  16.  
  17. #ifdef DEBUG
  18. printf("dup: %d %d\n", arr[i][0], arr[i][1]);
  19. #endif
  20. }
  21. }
  22. }
  23. return n;
  24. }
  25.  
  26. int main(void)
  27. {
  28. int a[14][2] = {{1, 1}, {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 2}, {3, 5}, {3, 6}, {1, 5}, {4, 4}, {8, 8}, {8, 8}, {0, 1}};
  29.  
  30. printf("input:\n");
  31. for (size_t i = 0; i < sizeof(a) / sizeof(int) / 2; i++)
  32. printf("%d %d\n", a[i][0], a[i][1]);
  33.  
  34. size_t new_size = find_dup(a, sizeof(a) / sizeof(int) / 2);
  35. printf("output:\n");
  36.  
  37. for (size_t i = 0; i < new_size; i++)
  38. printf("%d %d\n", a[i][0], a[i][1]);
  39. return 0;
  40. }
  41.  
  42.  
Success #stdin #stdout 0s 4392KB
stdin
Standard input is empty
stdout
input:
1 1
1 1
1 2
1 3
1 4
1 5
1 2
3 5
3 6
1 5
4 4
8 8
8 8
0 1
dup: 1 1
dup: 1 2
dup: 1 5
dup: 8 8
output:
1 1
1 2
1 3
1 4
1 5
3 5
3 6
4 4
8 8
0 1