Source code for submission s1312

Go to diff to previous submission

ants.cpp

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int pole[1000000];
  6. int poleC[1000000];
  7. int compare_ints(const void* a, const void* b)
  8. {
  9. const int *arg1 = (int*)a;
  10. const int *arg2 = (int*)b;
  11.  
  12. return *arg1 - *arg2;
  13. }
  14.  
  15. int main()
  16. {
  17. int l,a;
  18. while(scanf("%i %i",&l,&a)==2)
  19. {
  20. int p;
  21. char d;
  22. int m_l = 0;
  23. int m_r = 0;
  24. bool dva = false;
  25. int poctl = 0;
  26. char mc = '0';
  27.  
  28. for(int i = 0; i < a; ++i)
  29. {
  30. scanf("%i %c",&p, &d);
  31. pole[i] = p;
  32. poleC[i] = d;
  33. }
  34.  
  35. for(int i = 0; i < a; ++i)
  36. {
  37. if (poleC[i] == 'L')
  38. {
  39.  
  40. poctl++;
  41. if (pole[i] > m_l)
  42. {
  43. m_l = pole[i];
  44. }
  45. }
  46. else
  47. {
  48. if (l - pole[i] > m_r)
  49. {
  50. m_r = l - pole[i];
  51. }
  52. }
  53. }
  54.  
  55. if (m_r == m_l && a > 1)
  56. dva= true;
  57. else
  58. dva = false;
  59.  
  60. int m;
  61.  
  62. if (m_r > m_l)
  63. m = m_r;
  64. else
  65. m = m_l;
  66.  
  67.  
  68. qsort(pole, a, sizeof(int), compare_ints);
  69.  
  70. if (dva)
  71. {
  72. printf("The last ant will fall down in %i seconds - started at %i and %i.\n", m, pole[poctl-1], pole[poctl]);
  73. }
  74. else
  75. {
  76. printf("The last ant will fall down in %i seconds - started at %i.\n", m, pole[poctl]);
  77. }
  78.  
  79.  
  80. }
  81. return 0;
  82. }
  83.  

Diff to submission s1267

ants.cpp

--- c4.s1267.cteam114.ants.cpp.0.ants.cpp
+++ c4.s1312.cteam114.ants.cpp.0.ants.cpp
@@ -4,4 +4,5 @@
 
 int pole[1000000];
+int poleC[1000000];
 int compare_ints(const void* a, const void* b)
 {
@@ -19,5 +20,6 @@
                 int p;
                 char d;
-                int m = 0;
+                int m_l = 0;
+                int m_r = 0;
                 bool dva = false;
                 int poctl = 0;
@@ -28,35 +30,38 @@
                         scanf("%i %c",&p, &d);
                         pole[i] = p;
+                        poleC[i] = d;
+                }
 
-
-                        if (d == 'L' )
-                        {       
-                                poctl ++;
-                                if (p == m && mc == 'R')
-                                        dva = true;
-
-                                if (p > m)
+                for(int i = 0; i < a; ++i)
+                {
+                        if (poleC[i] == 'L')
+                        {
+                                
+                        poctl++;
+                                if (pole[i] > m_l)
                                 {
-                                        m = p;
-                                        dva =false;
-                                        mc = 'L';
+                                        m_l = pole[i];
                                 }
                         }
                         else
                         {
-                                if (l-p == m && mc == 'L')
-                                        dva = true;
-
-                                if (l-p > m)
+                                if (l - pole[i] > m_r)
                                 {
-                                        m = l-p;
-                                        dva = false;
-                                        mc = 'R';
+                                        m_r = l - pole[i];
                                 }
-
                         }
+                }
 
+                if (m_r == m_l && a > 1)
+                        dva= true;
+                else
+                        dva = false;
 
-                }
+int m;
+
+                if (m_r > m_l)
+                        m = m_r;
+                else
+                        m = m_l;