SIGSTP ERROR IN CODECHEF 1 одномерный массив - PullRequest
0 голосов
/ 28 апреля 2020

Я получаю ошибку 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;
}
...