Rang svakog elementa

Rang svakog elementa

Postovani,
Vec duze vreme se mucim sa ovim zadatkmo jer mi za poslednja 3 test primera program nije dovoljno brz. Da li nekako mozete da pomognete oko optimizovanja programa?

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;


struct tak{
    string ime;
    int rezultat;
};

bool cmp(tak p1,tak p2){
    return (p1.rezultat)>(p2.rezultat);
}

int binarySearch(vector<tak> arr,int n,int x)
{
    int l=0;
    int r=n-1;
    while (l <= r) {
        int m = l + (r - l) / 2;
        if (arr[m].rezultat == x)
            return m;
        if (arr[m].rezultat > x)
            l = m + 1;
        else
            r = m - 1;
    }
}

int main()
{
    ios_base::sync_with_stdio(false); cin.tie(0);
    int n;
    cin>>n;
    vector<tak> takmicari(n);
    vector<tak> kopija(n);
    for(int i=0;i<n;i++){
        cin>>takmicari[i].ime;
        cin>>takmicari[i].rezultat;
        kopija[i].ime=takmicari[i].ime;
        kopija[i].rezultat=takmicari[i].rezultat;
    }
    sort(takmicari.begin(),takmicari.end(),cmp);
    for(int i=0;i<n;i++){
        cout<<kopija[i].ime<<" "<<binarySearch(takmicari,n,kopija[i].rezultat)+1<<endl;
    }
    return 0;
}

Link ka zadatku ili odgovarajućoj stranici:

https://petlja.org/biblioteka/r/Zbirka2/rang_svakog_elementa

Проследи у binarySearch функцији низ arr као референцу и решио си проблем.

1 Like