Program Listing for File SequenceQueries.h

↰ Return to documentation for file (ADS/algorithm/SequenceQueries.h)

/*--------------------------------------------------------------------------*/
/*------------------------- File SequenceQueries.h -------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/

#ifndef __ADS_SequenceQueries
 #define __ADS_SequenceQueries
                      /* self-identification: #endif constant */

/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/Contract.h"
#include "ADS/sort/MergeSort.h"
#include "ADS/sort/Sorted.h"

#include <algorithm>
#include <cstddef>
#include <functional>
#include <map>
#include <numeric>
#include <optional>
#include <ranges>
#include <set>
#include <type_traits>
#include <utility>
#include <vector>

/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/

namespace ADS {

template< class T , class C = std::less<> >
std::vector< std::size_t > smallerToTheRight( const std::vector< T > & A ,
                                              C less = C() );

template< std::ranges::random_access_range R >
std::pair< std::size_t , std::size_t > longestKDistinctRun( const R & S ,
                                                            std::size_t k );

template< class T >
 requires( std::is_arithmetic_v< T > && ! std::is_same_v< T , bool > )
std::optional< std::pair< T , T > > largestGap(
                                       std::vector< std::pair< T , T > > I );

template< class T , class W = T >
 requires std::is_arithmetic_v< T >
W lineAssignment( std::vector< T > H , std::vector< T > L );

/*--------------------------------------------------------------------------*/

}  // end( namespace ADS )

/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/algorithm/impl/SequenceQueries.tpp"

/*--------------------------------------------------------------------------*/

#endif  /* SequenceQueries.h included */

/*--------------------------------------------------------------------------*/
/*----------------------- End File SequenceQueries.h -----------------------*/
/*--------------------------------------------------------------------------*/