Advertisement
mickypinata

PROG-T1088: Iguana

Jul 2nd, 2020
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. int main(){
  7.  
  8.     int ni, nc;
  9.     scanf("%d", &ni);
  10.     scanf("%d", &nc);
  11.     vector<int> L, R;
  12.     vector<int> events = {1, ni + 1};
  13.     for(int i = 1; i <= nc; ++i){
  14.         int l, r;
  15.         scanf("%d", &l);
  16.         scanf("%d", &r);
  17.         L.push_back(l);
  18.         R.push_back(r);
  19.         events.push_back(l);
  20.         events.push_back(r + 1);
  21.     }
  22.     sort(events.begin(), events.end());
  23.     events.resize(unique(events.begin(), events.end()) - events.begin());
  24.  
  25.     vector<int> lizard(events.size(), 0); /// 0 = R 1 = G 2 = B
  26.     for(int i = 0; i < nc; ++i){
  27.         int indexl = lower_bound(events.begin(), events.end(), L[i]) - events.begin();
  28.         int indexr = lower_bound(events.begin(), events.end(), R[i] + 1) - events.begin();
  29.         ++lizard[indexl];
  30.         --lizard[indexr];
  31.     }
  32.  
  33.     char tmp;
  34.     int tr;
  35.     scanf(" %c", &tmp);
  36.     switch(tmp){
  37.     case 'R':
  38.         tr = 0;
  39.         break;
  40.     case 'G':
  41.         tr = 1;
  42.         break;
  43.     case 'B':
  44.         tr = 2;
  45.         break;
  46.     }
  47.  
  48.     int sum = 0;
  49.     lizard[0] %= 3;
  50.     for(int i = 1; i < events.size(); ++i){
  51.         lizard[i] += lizard[i - 1];
  52.         lizard[i] %= 3;
  53.         if(lizard[i] < 0){
  54.             lizard[i] += 3;
  55.         }
  56.         if(lizard[i - 1] < tr){
  57.             sum += (events[i] - events[i - 1]) * (tr - lizard[i - 1]);
  58.         } else if(lizard[i - 1] > tr){
  59.             sum += (events[i] - events[i - 1]) * (3 + tr - lizard[i - 1]);
  60.         }
  61.     }
  62.  
  63.     cout << sum;
  64.  
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement