Блог пользователя CP_Sucks_GF_Doesnt

Автор CP_Sucks_GF_Doesnt, история, 8 лет назад, По-английски
Hi Guys, Today first time I'm trying to explain my way to solve 3rd problem of CF Round 497.
You can Read the question here: http://codeforces.me/contest/1008/problem/C
My Approach:
Push All element of the given array to Priority Queue.
Now, if there is only one element then obviously,it can't replaced by any another integer.



Now taking top 2 elements of the priority queue(q) for comparison, Cases are as follows:
int a,b,answer;
answer=0;
a=q.top();  //1st top
q.pop();

while(!q.empty())
{
      b=q.top();  //2nd top
      q.pop();
      1. If a>b:
            then we can replace b by a.
            answer++;
            a=b;  //(Important Step) Making current element(b) as 1st top for NEXT ITERATION
      2. If a<=b:
            So here at current iteration 'a' isn't useful,,,but it may be useful in future iterations so just store 'a' in a 
            queue(q1), and also check if queue is not empty and front element is greater then 'b' or not
            if(!q1.empty()):
               if(q1.front()>b)
                 answer++;
               q1.pop();

            q1.push(a);
}
cout<<answer;

Полный текст и комментарии »

  • Проголосовать: нравится
  • -11
  • Проголосовать: не нравится

Автор CP_Sucks_GF_Doesnt, история, 8 лет назад, По-английски
  • Проголосовать: нравится
  • -18
  • Проголосовать: не нравится