int search_target(int A[], int start, int end, int target){
     if(start > end){
         return -1;
     }
     int mid = (start + end) / 2;
     if(A[mid] == target){
         return mid;
     }
     if(A[mid] < target){
         return search_target(A, mid + 1, end, target);
     }
     else{
         return search_target(A, start, mid - 1, target);
     }
 }
Beispiel #2
0
OPJ_BOOL identify_target( query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
{
  if( query_param.tid){
    if( strcmp( query_param.tid, "0") != 0 ){
      if( query_param.cid[0] != '\0'){
	fprintf( FCGI_stdout, "Reason: Target can not be specified both through tid and cid\r\n");
	fprintf( FCGI_stdout, "Status: 400\r\n");
	return OPJ_FALSE;
      }
      if( ( *target = search_targetBytid( query_param.tid, targetlist)))
	return OPJ_TRUE;
    }
  }

  if( query_param.target)
    if( !( *target = search_target( query_param.target, targetlist)))
      if(!( *target = gene_target( targetlist, query_param.target)))
	return OPJ_FALSE;

  if( *target){
    fprintf( FCGI_stdout, "JPIP-tid: %s\r\n", (*target)->tid);
    return OPJ_TRUE;
  }
  else{
    fprintf( FCGI_stdout, "Reason: target not found\r\n");
    fprintf( FCGI_stdout, "Status: 400\r\n");
    return OPJ_FALSE;
  }
}
void MainWindow::heavy_task_done()
{
    ui->progressBar->hide();
    auto solution = qobject_cast<histogram_solution*>(ui->stackedWidgetMethod->currentWidget());
    auto const Result = solution->search_target(target_);
    setEnabled(true);

    show_result_thumb(Result);
}
 vector<int> searchRange(int A[], int n, int target) {
     // Start typing your C/C++ solution below
     // DO NOT write int main() function
     vector<int> range;
     int index = search_target(A, 0, n - 1, target);
     if(index == -1){
         range.push_back(-1);
         range.push_back(-1);
     }
     else{
         int left = index, right = index;
         while(left > 0 && A[left - 1] == A[index]){
             left--;
         }
         while(right < n - 1 && A[right + 1] == A[index]){
             right++;
         }
         range.push_back(left);
         range.push_back(right);
     }
     return range;
 }