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;



