मैं एक डिव 3 प्रतियोगिता से एक प्रश्न को हल करने का प्रयास कर रहा हूँ। मुझे लाइन 25 और 26 में परेशानी हो रही है, यह कह रहा है

error: cannot convert ' const__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int>

मुझे पूरा यकीन नहीं है कि क्या गलत है। इस लाइन का लक्ष्य न्यूनतम वेक्टर ए और बी को लंबे लंबे पूर्णांक अमीन और बीमिन में संग्रहीत करना है।

#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();
    }



}
c++
-6
Fenix Victoria 11 सितंबर 2020, 01:23

1 उत्तर

सबसे बढ़िया उत्तर

std::min कम से कम 2 एलिमेंट लौटाता है, रेंज का मिनिमम एलिमेंट नहीं। मान लें कि आप कम से कम 2 इटरेटर नहीं चाहते हैं, लेकिन एक श्रेणी का न्यूनतम तत्व, आपको std::min_element की आवश्यकता है और आपको परिणाम को इस तरह से हटाना होगा:

amin = * min_element(a.begin(), a.end());
    // ^

और आपको bmin के लिए भी यही काम करना होगा।


इसके अलावा, कृपया using namespace std; और सभी #define प्रकारों से बचें, यह कोड को पढ़ने के लिए और अधिक भ्रमित करता है।

0
cigien 10 सितंबर 2020, 22:29