#c
#c
Вопрос:
Я пытаюсь решить вопрос из конкурса Div 3. У меня проблемы со строками 25 и 26, там говорится
error: cannot convert ' const__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int>
Я не слишком уверен, что не так. Цель этой строки — сохранить минимум векторов a и b в длинное целое число amin и bmin.
#include <bits/stdc .h>
using namespace std;
#define ll long long
#define ld long double
#define endl "n"
void solve(){
ll input;
ll total;
int amount; cin >> amount;
vector<ll> a, b;
for(int i = 0; i < amount; i ){
cin >> input;
a.push_back(input);
}
for (int i = 0; i < amount; i ){
cin >> input;
b.push_back(input);
}
ll amin, bmin;
amin = min(a.begin(), a.end());
bmin = min(b.begin(), b.end());
ll adif, bdif, totaldif;
for(int i = 0; i < amount; i ){
adif = a[i] - amin;
bdif = b[i] - bmin;
totaldif = abs(adif - bdif);
total = (adif - totaldif) (bdif - totaldif) totaldif;
}
cout << total << endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int t; cin >> t;
while(t--){
solve();
}
}
Ответ №1:
std::min
возвращает минимум из 2 элементов, а не минимальный элемент диапазона. Предполагая, что вам нужны не минимум 2 итератора, а минимальный элемент диапазона, вам нужно std::min_element
и вам нужно разыменовать результат, вот так:
amin = * min_element(a.begin(), a.end());
// ^
И вам нужно сделать то же самое для bmin
.
Кроме того, пожалуйста, избегайте using namespace std;
и всех #define
символов для типов, это просто делает код более запутанным для чтения.
Комментарии:
1. О, хорошо, хорошо. Спасибо. Я вижу, std::min может возвращать только 2 элемента. Хорошо. Понял, спасибо.
2. @FenixVictoria Ну, он не возвращает 2 элемента, он возвращает минимум 2 элемента. Вы также можете использовать
std::min
для возврата минимального количества элементов.3. Ну, я понимаю, что это плохая практика, но для конкурентного программирования это получение ответов и кодирование максимально быстрым способом. Это не предназначено для того, чтобы люди их читали. Я понимаю, что вы имеете в виду, спасибо за предупреждение.
4. @FenixVictoria Если это не предназначено для чтения людьми, то почему вы публикуете это здесь, чтобы люди читали? Это объясняет множество отрицательных голосов, полученных вашим вопросом.