SRM336 div2 hard

図を書いて1つ1つ考えれば難しくない。
…3回くらいresubmitしたけどね。

#include <algorithm>
#include <vector>

using namespace std;

class MostLikely
{
	public:
		int likelyRank(vector <int> sc, int low, int high)
		{
			vector<int> rank(55,0);
			sc.push_back(1000000000+1);
			sc.push_back(-1);
			sort(sc.begin(),sc.end());
			reverse(sc.begin(),sc.end());

			for(int i=1;i<(int)sc.size();i++)
				if(sc[i-1]==sc[i])
					;
				else if(sc[i]<low && high<sc[i-1])
					rank[i]=high-low+1;
				else if(sc[i]<low)
					rank[i]=sc[i-1]-low;
				else if(high<sc[i-1])
					rank[i]=high-sc[i]+1;
				else
					rank[i]=sc[i-1]-sc[i];
					
			int m=*max_element(rank.begin(),rank.end());
			if(1<(int)count(rank.begin(),rank.end(),m))
				return -1;
			for(int i=0;i<55;i++)
				if(rank[i]==m)
					return i;
			return -2;
		}
};