Advertisement
tepyotin2

P75 Painting The Fence #226

Nov 6th, 2023
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. #define NMAX 100005
  6.  
  7. struct Event {
  8.     int x;
  9.     int inc;
  10.     bool operator<(Event const& e) const {
  11.         return x < e.x;
  12.     }
  13. };
  14.  
  15. Event events[2*NMAX];
  16.  
  17. int main() {
  18.     freopen("paint.in","r",stdin);
  19.     freopen("paint.out","w",stdout);
  20.  
  21.     int n, k;
  22.     scanf("%d", &n);
  23.     scanf("%d", &k); // for bronze, k=2
  24.     for (int i = 0; i < n; i++) {
  25.         int dist;
  26.         scanf("%d", &dist);
  27.         char c;
  28.         do { c = fgetc(stdin); } while (c != 'L' && c != 'R');
  29.         int x1 = x + dist * (c == 'L' ? -1 : 1);
  30.  
  31.         events[2*i].x = min(x, x1);
  32.         events[2*i].inc = 1;
  33.         events[2*i+1].x = max(x, x1);
  34.         events[2*i+1].inc = -1;
  35.  
  36.         x = x1;
  37.     }
  38.  
  39.     sort(events, events + (2*n));
  40.  
  41.     int nCoats = 0;
  42.     int answer = 0;
  43.     for (int i = 0; i < 2*n; i++) {
  44.         if (i > 0 && nCoats >= k) {
  45.             answer += events[i].x - events[i-1].x;
  46.         }
  47.         nCoats += events[i].inc;
  48.     }
  49.  
  50.     printf("%d\n", answer);
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement