Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <algorithm>
- using namespace std;
- #define NMAX 100005
- struct Event {
- int x;
- int inc;
- bool operator<(Event const& e) const {
- return x < e.x;
- }
- };
- Event events[2*NMAX];
- int main() {
- freopen("paint.in","r",stdin);
- freopen("paint.out","w",stdout);
- int n, k;
- scanf("%d", &n);
- scanf("%d", &k); // for bronze, k=2
- for (int i = 0; i < n; i++) {
- int dist;
- scanf("%d", &dist);
- char c;
- do { c = fgetc(stdin); } while (c != 'L' && c != 'R');
- int x1 = x + dist * (c == 'L' ? -1 : 1);
- events[2*i].x = min(x, x1);
- events[2*i].inc = 1;
- events[2*i+1].x = max(x, x1);
- events[2*i+1].inc = -1;
- x = x1;
- }
- sort(events, events + (2*n));
- int nCoats = 0;
- int answer = 0;
- for (int i = 0; i < 2*n; i++) {
- if (i > 0 && nCoats >= k) {
- answer += events[i].x - events[i-1].x;
- }
- nCoats += events[i].inc;
- }
- printf("%d\n", answer);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement