Advertisement
SuitNdtie

P1088:iguana

Oct 8th, 2019
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long int ll;
  5.  
  6. struct elem{
  7.     ll index;
  8.     ll stats;
  9.     bool operator < (const elem& rhs)const
  10.     {
  11.         return index < rhs.index;
  12.     }
  13. };
  14.  
  15. ll cost(ll food,ll now){
  16.     for(int i = 0 ; i <= 2 ; i ++){
  17.         if((now+i)%3 == food)return i;
  18.     }
  19.     printf("Error");
  20.     return -1;
  21. }
  22.  
  23. int main()
  24. {
  25.     //freopen("input.txt","r",stdin);
  26.     ll n,m;
  27.     scanf("%lld %lld",&n,&m);
  28.     vector<elem> vec;
  29.     for(ll i = 0 ; i < m ; i ++){
  30.         ll a,b;
  31.         scanf("%lld %lld",&a,&b);
  32.         vec.push_back({a,1});
  33.         vec.push_back({b+1,-1});
  34.     }
  35.     vec.push_back({n+1,0});
  36.     char c;
  37.     scanf(" %c",&c);
  38.     ll food;
  39.     if(c == 'R')food = 0;
  40.     else if(c == 'G')food = 1;
  41.     else if(c == 'B')food = 2;
  42.     sort(vec.begin(),vec.end());
  43.     /*printf("Test vec : ");
  44.     for(ll i = 0 ; i < vec.size() ; i ++)printf("(%d,%d) ",vec[i].index,vec[i].stats);
  45.     printf("\n");*/
  46.     vector<elem> vec2;
  47.     for(ll i = 0 ; i < vec.size() ; ){
  48.         ll j = i;
  49.         ll sum = 0;
  50.         while(j < vec.size() && vec[j].index == vec[i].index){
  51.             sum += vec[j].stats;
  52.             j++;
  53.         }
  54.         vec2.push_back({vec[i].index,sum});
  55.         i = j;
  56.     }
  57. /*  printf("Test vec2 : ");
  58.     for(ll i = 0 ; i < vec2.size() ; i ++){
  59.         printf("(%lld,%lld) ",vec2[i].index,vec2[i].stats);
  60.     }
  61.     printf("\n");*/
  62.     ll prev = 1;
  63.     ll now = 0;
  64.     ll ans = 0;
  65.     for(ll i = 0 ; i < vec2.size() ; i ++){
  66.         ll len = vec2[i].index - prev;
  67.         ans += len*cost(food,now%3);
  68.         now += vec2[i].stats;
  69.         prev = vec2[i].index;
  70.     /*  int sum = 0
  71.         int j = i;
  72.         while(j < vec.size() && vec[j].index ==)*/
  73.     }
  74.     printf("%lld",ans);
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement