Source code for submission s710

ants.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. char ants[200000];
  6.  
  7. int main(int argc, char **argv)
  8. {
  9. int count, dlzka;
  10. // int pos, last, left, right;
  11. int i,j;
  12. int lastl, lastr;
  13. int antstart;
  14. char antdir;
  15. int totall, totalr;
  16. int lpl, lpr;
  17. int timel, timer;
  18. while (1) {
  19. scanf("%d %d\n", &dlzka, &count);
  20. if (feof(stdin))
  21. break;
  22. memset(ants, '.', sizeof(ants));
  23. ants[dlzka+1] = 0;
  24. lastl = -1;
  25. lastr = 1000000;
  26. totall = 0;
  27. totalr = 0;
  28. timel = -1;
  29. timer = -1;
  30. for (i=0; i<count; i++) {
  31. scanf("%d %c\n", &antstart, &antdir);
  32. ants[antstart] = antdir;
  33. if (antdir == 'L' && antstart > lastl) {
  34. lastl = antstart;
  35. timel = lastl;
  36. }
  37. if (antdir == 'R' && antstart < lastr) {
  38. lastr = antstart;
  39. timer = dlzka - antstart;
  40. }
  41. if (antdir == 'L') totall++;
  42. if (antdir == 'R') totalr++;
  43. }
  44. j = 0;
  45. for (i=0; i<=dlzka; i++) {
  46. if (ants[i] == 'L' || ants[i] == 'R')
  47. j++;
  48. if (j==totall) {
  49. lpl = i;
  50. break;
  51. }
  52. }
  53. j = 0;
  54. for (i=dlzka; i>=0; i--) {
  55. if (ants[i] == 'L' || ants[i] == 'R')
  56. j++;
  57. if (j==totalr) {
  58. lpr = i;
  59. break;
  60. }
  61. }
  62. //printf("%s\n %d %d %d %d\n %d %d\n%d %d\n", ants, lastl, lastr, totall, totalr, lpl, lpr, timel, timer);
  63. printf("The last ant will fall down in %d seconds - started at ", (timer>timel)?timer:timel);
  64. if (timer > timel) {
  65. printf("%d.\n", lpr);
  66. }
  67. if (timer < timel) {
  68. printf("%d.\n", lpl);
  69. }
  70. if (timer==timel) {
  71. printf("%d and %d.\n", lpl, lpr);
  72. }
  73. }
  74. return 0;
  75. }
  76.