fork download
  1. #include <stdio.h>
  2.  
  3. int water(void)
  4. {
  5. int a[] = {0, 0, 0, 0}; // 4Lの水差し
  6. int b[] = {0, 0, 0}; // 3Lの水差し
  7. int i, n;
  8.  
  9. // aに水を一杯にする
  10. for (i = 0; i < 4; i++)
  11. a[i] = 1;
  12.  
  13. // aからbに水を移す
  14. for (i = 2; i >= 0; i--) {
  15. b[i] = a[i + 1];
  16. a[i + 1] = 0;
  17. }
  18.  
  19. // bを空にする
  20. for (i = 0; i < 3; i++)
  21. b[i] = 0;
  22.  
  23. // aからbに水を移す
  24. b[0] = a[0];
  25. a[0] = 0;
  26.  
  27. // aに水を一杯にする
  28. for (i = 0; i < 4; i++)
  29. a[i] = 1;
  30.  
  31. // bがいっぱいになるまでaからbに水を移す
  32. n = 1;
  33. for (i = 2; i >= 0; i--) {
  34. b[n++] = a[i + 1];
  35. a[i + 1] = 0;
  36. if (b[0] && b[1] && b[2])
  37. break;
  38. }
  39.  
  40. // aの水の量を数える
  41. n = 0;
  42. for (i = 0; i < 4; i++) {
  43. if (a[i])
  44. n++;
  45. }
  46. return n;
  47. }
  48.  
  49. int main(void)
  50. {
  51. printf("%dl\n", water());
  52.  
  53. return 0;
  54. }
Success #stdin #stdout 0.01s 1720KB
stdin
Standard input is empty
stdout
2l