fork download
  1. #include <stdio.h>
  2.  
  3. struct Animal {
  4. int happiness;
  5. int consecutiveDays;
  6. };
  7.  
  8. int main() {
  9. int m;
  10. scanf("%d", &m);
  11.  
  12. int perfectCount = 0;
  13.  
  14. for (int i = 0; i < m; i++) {
  15. struct Animal dog = {0, 0};
  16. struct Animal cat = {0, 0};
  17.  
  18. int dogInitialHappiness, catInitialHappiness, n;
  19. scanf("%d %d", &dogInitialHappiness, &catInitialHappiness);
  20. scanf("%d", &n);
  21.  
  22. int food[n];
  23. for (int j = 0; j < n; j++) {
  24. scanf("%d", &food[j]);
  25. }
  26.  
  27. int maxHappiness = 0;
  28.  
  29. for (int j = 0; j < n; j++) {
  30. if (food[j] == 1) {
  31. dog.happiness += 5;
  32. dog.consecutiveDays++;
  33. cat.consecutiveDays = 0;
  34. } else if (food[j] == 2) {
  35. cat.happiness += 5;
  36. cat.consecutiveDays++;
  37. dog.consecutiveDays = 0;
  38. } else if (food[j] == 3) {
  39. dog.happiness -= 10;
  40. cat.happiness -= 10;
  41. dog.consecutiveDays++;
  42. cat.consecutiveDays++;
  43. }
  44.  
  45. // 將滿足度限制在0到100之間
  46. dog.happiness = (dog.happiness < 0) ? 0 : (dog.happiness > 100) ? 100 : dog.happiness;
  47. cat.happiness = (cat.happiness < 0) ? 0 : (cat.happiness > 100) ? 100 : cat.happiness;
  48.  
  49. if (dog.happiness > maxHappiness) {
  50. maxHappiness = dog.happiness;
  51. }
  52. if (cat.happiness > maxHappiness) {
  53. maxHappiness = cat.happiness;
  54. }
  55.  
  56. if (dog.consecutiveDays > 2) {
  57. // 恢復滿足度到最初水平
  58. dog.happiness = dogInitialHappiness;
  59. dog.consecutiveDays = 0;
  60. }
  61. if (cat.consecutiveDays > 2) {
  62. // 恢復滿足度到最初水平
  63. cat.happiness = catInitialHappiness;
  64. cat.consecutiveDays = 0;
  65. }
  66.  
  67. if (dog.happiness <= -20 || cat.happiness <= -20) {
  68. break;
  69. }
  70. }
  71.  
  72. if (maxHappiness >= 25) {
  73. perfectCount++;
  74. }
  75. }
  76.  
  77. if (perfectCount == 0) {
  78. printf("No one is perfect\n");
  79. } else {
  80. printf("%d\n", perfectCount);
  81. }
  82.  
  83. return 0;
  84. }
  85.  
Success #stdin #stdout 0s 5536KB
stdin
2
20 20
2
4 4
10 4
5
1 0 2 4 3
stdout
No one is perfect