Advertisement
rjlth

Untitled

Dec 15th, 2014
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. #include <cmath>
  4. #include <vector>
  5. #include <utility>
  6. #include <algorithm>
  7. #include <cstdio>
  8. #include <cstdlib>
  9. #include <fstream>
  10. #include <string>
  11. #include <string.h>
  12. #include <sstream>
  13. #include <map>
  14. #include <set>
  15. #include <stack>
  16. #include <queue>
  17. #include <deque>
  18. #include <limits>
  19. #include <list>
  20. #include <functional>
  21. #include <bitset>
  22. #include <numeric>
  23. #include <iomanip>
  24. #include <ctime>
  25.  
  26. using namespace std;
  27. typedef long long ll;
  28.  
  29. #define F first
  30. #define S second
  31. #define pb push_back
  32. #define mp make_pair
  33. #define sz size()
  34. #define FOR(i, a, b) for(int i = a; i < b; i++)
  35. #define ROF(i, a, b) for(int i=a-1; i>=b; i--)
  36. #define INF numeric_limits<int>::max()
  37. #define y1 y1111111
  38. #define PI 3.14159265359
  39. #define RAD 57.2957795
  40.  
  41. pair<int,bool> a[100000];
  42. int x[100000], y[100000];
  43. int n, m, l, r, t, res;
  44. char c, c1;
  45.  
  46. int main()
  47. {
  48. #ifndef ONLINE_JUDGE
  49. freopen("learning.in","rt",stdin);
  50. freopen("learning.out","wt",stdout);
  51. #endif
  52. cin>>n>>l>>r;
  53. for (int i=0; i<n; i++) {
  54. scanf("\n%c%c%d", &c, &c1, &t);
  55. a[i]=mp(t, (c=='S'));
  56. }
  57. sort(a, a+n);
  58. for (int i=1; i<n-1; i++) {
  59. m=a[i].F+a[i-1].F;
  60. x[i]=(m/2)+(m%2);
  61. m=a[i].F+a[i+1].F;
  62. y[i]=m/2;
  63. }
  64. m=a[0].F+a[1].F;
  65. y[0]=m/2;
  66. m=a[n-1].F+a[n-2].F;
  67. x[n-1]=(m/2)+(m%2);
  68.  
  69. x[0]=min(a[0].F, l);
  70. y[n-1]=max(a[n-1].F, r);
  71.  
  72. res=r-l+1;
  73. for (int i=0; i<n; i++)
  74. if (!a[i].S) {
  75. cerr<<i<<" : ";
  76. t=min(a[i].F, r+1)-max(l, x[i]);
  77. if (i && y[i-1]==x[i] && l<=x[i] && x[i]<=r) t--;
  78. t=max(0, t);
  79. res-=t;
  80.  
  81. t=min(r, y[i])-max(a[i].F, l-1);
  82. if (i+1<n && a[i+1].S && x[i+1]==y[i] && y[i]<=r && l<=y[i]) t--;
  83. t=max(0, t);
  84. res-=t;
  85. if (l<=a[i].F && a[i].F<=r) res--;
  86. }
  87. cout<<res;
  88. return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement