Я получаю ошибку SIGSTP в codechef (превышено ограничение по времени) при выполнении следующей программы. Я использовал алгоритм «разделяй и властвуй» для решения проблемы. Может кто-нибудь подсказать, пожалуйста, где я ошибся?
Учитывая массив arr [], задача состоит в том, чтобы посчитать количество пар (arr [i], arr [j]) на право каждого элемента с любым пользовательским компаратором.
#include <iostream>
using namespace std;
int arr[20],count=0;
void util(int l,int m,int h,char comp)
{
int left[m-l+1];
int right[h-m];
for(int i=0;i<(m-l+1);i++)
{
left[i]=arr[l+i]; // Copy left sub array into array left
}
for(int j=0;j<(h-m);j++)
{
right[j]=arr[m+1+j]; // Copy right sub array into array right
}
for(int i=0;i<(m-l+1);i++)
{
for(int j=0;j<(h-m);j++)
{
if(comp=='=')
{
if(left[i]==right[j])
{
count++;
}
}
else if(comp=='>')
{
if(left[i]>right[j])
{
count++;
}
}
else
{
if(left[i]<right[j])
{
count++;
}
}
}
}
}
void compare(int l,int h,char comp)
{
int m=(l+h)/2;
compare(l,m,comp); // Divide the array recursively on left
compare(m+1,h,comp);// Divide the array recursivel on right
util(l,m,h,comp); // Compare 2 sub arrays
cout<<count;
}
int main()
{
char comp;
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>arr[i];
int l=0;
int h=n-1;
cin>>comp;
compare(l,h,comp);
return 0;
}