Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long int ll;
- struct elem{
- ll index;
- ll stats;
- bool operator < (const elem& rhs)const
- {
- return index < rhs.index;
- }
- };
- ll cost(ll food,ll now){
- for(int i = 0 ; i <= 2 ; i ++){
- if((now+i)%3 == food)return i;
- }
- printf("Error");
- return -1;
- }
- int main()
- {
- //freopen("input.txt","r",stdin);
- ll n,m;
- scanf("%lld %lld",&n,&m);
- vector<elem> vec;
- for(ll i = 0 ; i < m ; i ++){
- ll a,b;
- scanf("%lld %lld",&a,&b);
- vec.push_back({a,1});
- vec.push_back({b+1,-1});
- }
- vec.push_back({n+1,0});
- char c;
- scanf(" %c",&c);
- ll food;
- if(c == 'R')food = 0;
- else if(c == 'G')food = 1;
- else if(c == 'B')food = 2;
- sort(vec.begin(),vec.end());
- /*printf("Test vec : ");
- for(ll i = 0 ; i < vec.size() ; i ++)printf("(%d,%d) ",vec[i].index,vec[i].stats);
- printf("\n");*/
- vector<elem> vec2;
- for(ll i = 0 ; i < vec.size() ; ){
- ll j = i;
- ll sum = 0;
- while(j < vec.size() && vec[j].index == vec[i].index){
- sum += vec[j].stats;
- j++;
- }
- vec2.push_back({vec[i].index,sum});
- i = j;
- }
- /* printf("Test vec2 : ");
- for(ll i = 0 ; i < vec2.size() ; i ++){
- printf("(%lld,%lld) ",vec2[i].index,vec2[i].stats);
- }
- printf("\n");*/
- ll prev = 1;
- ll now = 0;
- ll ans = 0;
- for(ll i = 0 ; i < vec2.size() ; i ++){
- ll len = vec2[i].index - prev;
- ans += len*cost(food,now%3);
- now += vec2[i].stats;
- prev = vec2[i].index;
- /* int sum = 0
- int j = i;
- while(j < vec.size() && vec[j].index ==)*/
- }
- printf("%lld",ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement