fork download
  1. #include <cstring>
  2. #include <string>
  3. #include <map>
  4. #include <deque>
  5. #include <queue>
  6. #include <stack>
  7. #include <sstream>
  8. #include <iostream>
  9. #include <iomanip>
  10. #include <cstdio>
  11. #include <cmath>
  12. #include <algorithm>
  13. #include <vector>
  14. #include <set>
  15. #include <list>
  16. #include <climits>
  17. #include <functional>
  18.  
  19. using namespace std;
  20.  
  21. #define MAP map <int, string>
  22.  
  23. int main(){
  24. // freopen("in.txt", "r", stdin);
  25. int T; scanf("%d", &T);
  26. while(T--){
  27. int n, t, m; scanf("%d %d %d", &n, &t, &m);
  28. MAP Cars;
  29. while(m--){
  30. int Arrival; string Bank;
  31. cin >> Arrival >> Bank;
  32. Cars[Arrival] = Bank;
  33. }
  34. int Passed_Time = 0; string Ferry_Bank = "left";
  35. for(MAP::iterator it = Cars.begin(); it != Cars.end(); ){
  36. int Cnt = 0;
  37. if(it->first <= Passed_Time){
  38. if(it->second != Ferry_Bank){
  39. Passed_Time += t; Ferry_Bank = it->second;
  40. }
  41. while(it != Cars.end() && Cnt < n && it->first <= Passed_Time && it->second == Ferry_Bank){
  42. Cnt++; it++;
  43. }
  44. Passed_Time += t;
  45. while(Cnt--) printf("%d\n", Passed_Time);
  46. Ferry_Bank = (Ferry_Bank == "left") ? "right":"left";
  47. }
  48. else Passed_Time = it->first;
  49. }
  50. if(T) puts("");
  51. }
  52. return 0;
  53. }
Success #stdin #stdout 0s 3480KB
stdin
2
2 10 10
0 left
10 left
20 left
30 left
40 left
50 left
60 left
70 left
80 left
90 left
2 10 3
10 right
25 left
40 left
stdout
10
30
30
50
50
70
70
90
90
110

30
40
60