#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;

struct Foo {
    float score;
    bool winner;
};

int main() {
	vector<Foo> inputs { {20, true}, {10, false}, {5, true}, {30, true} }; 
	vector<Foo*> foor; 
	for (auto& x:inputs)
	   foor.push_back(&x);
	vector<Foo*> foob(inputs.size(),nullptr); 
	transform(inputs.begin(), inputs.end(), foob.begin(), [](auto&x) {return &x;}); 
    for (auto& x:inputs) cout<<x.score<<" "; cout<<endl; 
    for (auto& x:foob) cout<<x->score<<" "; cout<<endl; 
    for (auto& x:foor) cout<<x->score<<" "; cout<<endl; 
    
    sort(foob.begin(), foob.end(), [](Foo*a, Foo*b)->bool {return a->score>b->score;}); 
    for (auto& x:foob) cout<<x->score<<" "; cout<<endl; 
    for (size_t i=0; i<foob.size(); i++)
        foob[i]->winner= i<3;
    for (auto& x:foob) cout<<x->winner<<" "; cout<<endl; 
	return 0;
}