Sortowania malejące po drugiej wartości pary – problem z kompilacją

0

Witam
Próbuję zrobić takie o to zadanie: http://solve.edu.pl/tasks/view/188

U mnie i na ideone program normalnie się kompiluje i zwraca poprawne odpowiedzi ale na stronie z której jest to zadanie gdy wysyłam rozwiązanie wyskakuje błąd kompilacji. Dopiero gdy usunąłem komperator do funkcji sort kompiluje się na tej stronie, ale wtedy oczywiście nie zwraca program poprawnych odpowiedzi.

Oto kod:

#include <bits/stdc++.h>
using namespace std;

bool mySort(pair<int, int>& a, pair<int, int>& b)
{
    return a.second > b.second;
}

int main() 
{
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);

	string s;
	cin>>s;

	pair<int,int>ilosc[27];
	
	for(int i=0;i<s.size();i++)
	{
		ilosc[s[i]-'a'+1].second=s[i]-'a'+1;
		ilosc[s[i]-'a'+1].first+=1;
	}
	
	sort(ilosc,ilosc+27);
	
	char l;
	
	int licznik=1;
	int i=26;
	int a=26,b=26;
	while(a>=1&&b<=26&&i>=1)
	{
		if(ilosc[i].first==ilosc[i-1].first)a--;
		else
		{
			sort(ilosc+a, ilosc+b+1, &mySort);
			a=i-1;
			b=i-1;
		} 
		i--;
	}

	for(int i=26;i>=1;i--)
	{
		for(int j=1;j<=ilosc[i].first;j++)
		{
			l=ilosc[i].second+'a'-1;
			cout<<l;
		}
	}
	return 0;
}

Czemu u mnie na linuxie i na ideone to działa a tam nie?
Jest w nim coś źle czy to strona ma jakiś błąd?
Z góry dziękuję za odpowiedź.

0

Obstawiałbym, że jest problem przez to, że używasz <bits/stdc++.h>

0

Sprawdź, czy Twoja funkcja mySort spełnia wszystkie wymagania opisane na tej stronie: http://en.cppreference.com/w/cpp/concept/Compare


UPDATE: Dawno miałem z C++ do czynienia, ale może to na przykład o to chodzi?

As with any BinaryPredicate, evaluation of that expression is not allowed to call non-const functions through the dereferenced iterators.

1 użytkowników online, w tym zalogowanych: 0, gości: 1