Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- #include <cmath>
- #include <vector>
- #include <utility>
- #include <algorithm>
- #include <cstdio>
- #include <cstdlib>
- #include <fstream>
- #include <string>
- #include <string.h>
- #include <sstream>
- #include <map>
- #include <set>
- #include <stack>
- #include <queue>
- #include <deque>
- #include <limits>
- #include <list>
- #include <functional>
- #include <bitset>
- #include <numeric>
- #include <iomanip>
- #include <ctime>
- using namespace std;
- typedef long long ll;
- #define F first
- #define S second
- #define pb push_back
- #define mp make_pair
- #define sz size()
- #define FOR(i, a, b) for(int i = a; i < b; i++)
- #define ROF(i, a, b) for(int i=a-1; i>=b; i--)
- #define INF numeric_limits<int>::max()
- #define y1 y1111111
- #define PI 3.14159265359
- #define RAD 57.2957795
- pair<int,bool> a[100000];
- int x[100000], y[100000];
- int n, m, l, r, t, res;
- char c, c1;
- int main()
- {
- #ifndef ONLINE_JUDGE
- freopen("learning.in","rt",stdin);
- freopen("learning.out","wt",stdout);
- #endif
- cin>>n>>l>>r;
- for (int i=0; i<n; i++) {
- scanf("\n%c%c%d", &c, &c1, &t);
- a[i]=mp(t, (c=='S'));
- }
- sort(a, a+n);
- for (int i=1; i<n-1; i++) {
- m=a[i].F+a[i-1].F;
- x[i]=(m/2)+(m%2);
- m=a[i].F+a[i+1].F;
- y[i]=m/2;
- }
- m=a[0].F+a[1].F;
- y[0]=m/2;
- m=a[n-1].F+a[n-2].F;
- x[n-1]=(m/2)+(m%2);
- x[0]=min(a[0].F, l);
- y[n-1]=max(a[n-1].F, r);
- res=r-l+1;
- for (int i=0; i<n; i++)
- if (!a[i].S) {
- cerr<<i<<" : ";
- t=min(a[i].F, r+1)-max(l, x[i]);
- if (i && y[i-1]==x[i] && l<=x[i] && x[i]<=r) t--;
- t=max(0, t);
- res-=t;
- t=min(r, y[i])-max(a[i].F, l-1);
- if (i+1<n && a[i+1].S && x[i+1]==y[i] && y[i]<=r && l<=y[i]) t--;
- t=max(0, t);
- res-=t;
- if (l<=a[i].F && a[i].F<=r) res--;
- }
- cout<<res;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement