@@ -458,21 +458,41 @@ class TIntervalPositions {
458
458
return Positions.end ();
459
459
}
460
460
461
- void AddPosition (TSortableBatchPosition&& position, const bool includeLeftInterval) {
462
- TIntervalPosition intervalPosition (std::move (position), includeLeftInterval);
463
- if (Positions.size ()) {
464
- AFL_VERIFY (Positions.back () < intervalPosition)(" back" , Positions.back ().DebugJson ())(" pos" , intervalPosition.DebugJson ());
465
- }
461
+ void InsertPosition (TIntervalPosition&& intervalPosition) {
466
462
Positions.emplace_back (std::move (intervalPosition));
463
+ ui32 index = Positions.size () - 1 ;
464
+ while (index >= 1 && Positions[index ] < Positions[index - 1 ]) {
465
+ std::swap (Positions[index ], Positions[index - 1 ]);
466
+ index = index - 1 ;
467
+ }
468
+ }
469
+
470
+ void InsertPosition (TSortableBatchPosition&& position, const bool includePositionToLeftInterval) {
471
+ TIntervalPosition intervalPosition (std::move (position), includePositionToLeftInterval);
472
+ InsertPosition (std::move (intervalPosition));
467
473
}
468
474
469
- void AddPosition (const TSortableBatchPosition& position, const bool includeLeftInterval) {
470
- TIntervalPosition intervalPosition (position, includeLeftInterval);
475
+ void InsertPosition (const TSortableBatchPosition& position, const bool includePositionToLeftInterval) {
476
+ TIntervalPosition intervalPosition (position, includePositionToLeftInterval);
477
+ InsertPosition (std::move (intervalPosition));
478
+ }
479
+
480
+ void AddPosition (TIntervalPosition&& intervalPosition) {
471
481
if (Positions.size ()) {
472
482
AFL_VERIFY (Positions.back () < intervalPosition)(" back" , Positions.back ().DebugJson ())(" pos" , intervalPosition.DebugJson ());
473
483
}
474
484
Positions.emplace_back (std::move (intervalPosition));
475
485
}
486
+
487
+ void AddPosition (TSortableBatchPosition&& position, const bool includePositionToLeftInterval) {
488
+ TIntervalPosition intervalPosition (std::move (position), includePositionToLeftInterval);
489
+ AddPosition (std::move (intervalPosition));
490
+ }
491
+
492
+ void AddPosition (const TSortableBatchPosition& position, const bool includePositionToLeftInterval) {
493
+ TIntervalPosition intervalPosition (position, includePositionToLeftInterval);
494
+ AddPosition (std::move (intervalPosition));
495
+ }
476
496
};
477
497
478
498
class TRWSortableBatchPosition : public TSortableBatchPosition , public TMoveOnly {
0 commit comments