Go to diff to previous submission
#include <stdio.h> #include <stdlib.h> #include <math.h> int pole[1000000]; int poleC[1000000]; int compare_ints(const void* a, const void* b) { const int *arg1 = (int*)a; const int *arg2 = (int*)b; return *arg1 - *arg2; } int main() { int l,a; while(scanf("%i %i",&l,&a)==2) { int p; char d; int m_l = 0; int m_r = 0; bool dva = false; int poctl = 0; char mc = '0'; for(int i = 0; i < a; ++i) { scanf("%i %c",&p, &d); pole[i] = p; poleC[i] = d; } for(int i = 0; i < a; ++i) { if (poleC[i] == 'L') { poctl++; if (pole[i] > m_l) { m_l = pole[i]; } } else { if (l - pole[i] > m_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; qsort(pole, a, sizeof(int), compare_ints); if (dva) { printf("The last ant will fall down in %i seconds - started at %i and %i.\n", m, pole[poctl-1], pole[poctl]); } else { printf("The last ant will fall down in %i seconds - started at %i.\n", m, pole[poctl]); } } return 0; }
--- 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;