170 похожих чатов

#Include <iostream> #include <vector> using Vector = std::vector<int32_t>; template <typename RandomIt> requires std::random_access_iterator<RandomIt> using Indexes

= std::pair<RandomIt, RandomIt>;

template <typename RandomIt>
requires std::random_access_iterator<RandomIt>
Indexes<RandomIt> Partition(RandomIt start, RandomIt end, RandomIt pivot) {
RandomIt pivot_start = start;
RandomIt iter = start;
RandomIt pivot_end = end;
while (iter <= pivot_end) {
if (*iter < *pivot) {
std::swap(*pivot_start, *iter);
++pivot_start;
++iter;
} else if (*iter > *pivot) {
std::swap(*iter, *pivot_end);
--pivot_end;
} else {
++iter;
}
}
return std::make_pair(pivot_start, pivot_end);
}

template <typename RandomIt>
requires std::random_access_iterator<RandomIt>
void NonQuickSort(RandomIt start, RandomIt end) {
if (start >= end) {
return;
}

Indexes<RandomIt> pivot_borders = Partition(start, end, start);
NonQuickSort(start, pivot_borders.first - 1);
NonQuickSort(pivot_borders.second + 1, end);
}

template <typename RandomIt>
requires std::random_access_iterator<RandomIt>
RandomIt GetMedian(RandomIt start, RandomIt end) {
Vector tmp(start, end + 1);
NonQuickSort(tmp.begin(), tmp.end() - 1);
size_t median_index =
tmp.size() % 2 == 1 ? tmp.size() / 2 : tmp.size() / 2 - 1;
return tmp.begin() + median_index;
}

template <typename RandomIt>
requires std::random_access_iterator<RandomIt>
RandomIt QuickSelect(RandomIt start, RandomIt end, int32_t kth) {
if (start == end) {
return start;
}
int32_t fiver_cont = (end - start + 1) / 5;
if ((end - start + 1) % 5 != 0) {
++fiver_cont;
}
std::vector<RandomIt> medians;
medians.reserve(fiver_cont);
RandomIt index = start;
while (index + 5 < end) {
medians.push_back(GetMedian(index, index + 4));
index += 5;
}
medians.push_back(GetMedian(index, end));
RandomIt median =
QuickSelect(medians.begin(), (medians.end() - 1), (medians.size() - 1) / 2);
Indexes<RandomIt> pivot_borders = Partition(start, end, median);
if (kth <= pivot_borders.first - start) {
return QuickSelect(start, pivot_borders.first, kth);
}
if (kth <= pivot_borders.second - start) {
return median;
}
return QuickSelect(pivot_borders.second + 1, end,
kth - (pivot_borders.second - start + 1));
}

template <typename RandomIt>
requires std::random_access_iterator<RandomIt>
void QuickSort(RandomIt start, RandomIt end) {
if (start >= end) {
return;
}
size_t median_index = (end - start + 1) % 2 == 1 ? (end - start + 1) / 2
: (end - start + 1) / 2 - 1;
RandomIt pivot = QuickSelect(start, end, median_index);
Indexes<RandomIt> pivot_borders = Partition(start, end, pivot);
QuickSort(start, pivot_borders.first - 1);
QuickSort(pivot_borders.second + 1, end);
}

int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
int32_t count;
std::cin >> count;
Vector nums(count);
for (int32_t i = 0; i < count; ++i) {
std::cin >> nums[i];
}
QuickSort(nums.begin(), nums.end()- 1);
for (int32_t i = 0; i < count; ++i) {
std::cout << nums[i] << ' ';
}
}
Почему не компилируется код? Огромное полотно логов

5 ответов

50 просмотров

Может, не тот стандарт языка выбрал? main.cpp:6:1 : note: ‘requires’ only available with ‘-std=c++20’ or ‘-fconcepts’ main.cpp:10:1: error: ‘requires’ does not name a type

компилятор видит твоё полотно кода и принял вызов

Смотри на первую ошибку

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Oh sorry did you want it in Gunter's chains?
Martin Rys
15
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
4
Карта сайта