#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class Movie {
public:
Movie(string movieTitle);
void SetVotes(int numUpVotes, int numDownVotes) {
upVotes = numUpVotes;
downVotes = numDownVotes;
}
string GetTitle() const { return title; }
int GetVoteDifference() const { return upVotes - downVotes; }
private:
string title;
int upVotes;
int downVotes;
};
Movie::Movie(string movieTitle) {
title = movieTitle;
upVotes = 0;
downVotes = 0;
}
bool operator<(const Movie& movie1, const Movie& movie2) {
return movie1.GetVoteDifference() < movie2.GetVoteDifference();
}
int main() {
vector<Movie> movieList;
Movie movie1("Batman");
Movie movie2("Up");
Movie movie3("It");
Movie movie4("Frozen");
movie1.SetVotes(9, 4);
movie2.SetVotes(15, 2);
movie3.SetVotes(14, 1);
movie4.SetVotes(13, 2);
movieList.push_back(movie1);
movieList.push_back(movie2);
movieList.push_back(movie3);
movieList.push_back(movie4);
sort(movieList.begin(), movieList.end());
cout << movieList.back().GetTitle() << " is the best." << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgTW92aWUgewpwdWJsaWM6CiAgIE1vdmllKHN0cmluZyBtb3ZpZVRpdGxlKTsKICAgdm9pZCBTZXRWb3RlcyhpbnQgbnVtVXBWb3RlcywgaW50IG51bURvd25Wb3RlcykgewogICAgICB1cFZvdGVzID0gbnVtVXBWb3RlczsKICAgICAgZG93blZvdGVzID0gbnVtRG93blZvdGVzOwogICB9CiAgIHN0cmluZyBHZXRUaXRsZSgpIGNvbnN0IHsgcmV0dXJuIHRpdGxlOyB9CiAgIGludCBHZXRWb3RlRGlmZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIHVwVm90ZXMgLSBkb3duVm90ZXM7IH0KCnByaXZhdGU6CiAgIHN0cmluZyB0aXRsZTsKICAgaW50IHVwVm90ZXM7CiAgIGludCBkb3duVm90ZXM7Cn07CgpNb3ZpZTo6TW92aWUoc3RyaW5nIG1vdmllVGl0bGUpIHsKICAgdGl0bGUgPSBtb3ZpZVRpdGxlOwogICB1cFZvdGVzID0gMDsKICAgZG93blZvdGVzID0gMDsKfQoKYm9vbCBvcGVyYXRvcjwoY29uc3QgTW92aWUmIG1vdmllMSwgY29uc3QgTW92aWUmIG1vdmllMikgewogICByZXR1cm4gbW92aWUxLkdldFZvdGVEaWZmZXJlbmNlKCkgPCBtb3ZpZTIuR2V0Vm90ZURpZmZlcmVuY2UoKTsKfQoKaW50IG1haW4oKSB7CiAgIHZlY3RvcjxNb3ZpZT4gbW92aWVMaXN0OwogICBNb3ZpZSBtb3ZpZTEoIkJhdG1hbiIpOwogICBNb3ZpZSBtb3ZpZTIoIlVwIik7CiAgIE1vdmllIG1vdmllMygiSXQiKTsKICAgTW92aWUgbW92aWU0KCJGcm96ZW4iKTsKCiAgIG1vdmllMS5TZXRWb3Rlcyg5LCA0KTsKICAgbW92aWUyLlNldFZvdGVzKDE1LCAyKTsKICAgbW92aWUzLlNldFZvdGVzKDE0LCAxKTsKICAgbW92aWU0LlNldFZvdGVzKDEzLCAyKTsKCiAgIG1vdmllTGlzdC5wdXNoX2JhY2sobW92aWUxKTsKICAgbW92aWVMaXN0LnB1c2hfYmFjayhtb3ZpZTIpOwogICBtb3ZpZUxpc3QucHVzaF9iYWNrKG1vdmllMyk7CiAgIG1vdmllTGlzdC5wdXNoX2JhY2sobW92aWU0KTsKCiAgIHNvcnQobW92aWVMaXN0LmJlZ2luKCksIG1vdmllTGlzdC5lbmQoKSk7CgogICBjb3V0IDw8IG1vdmllTGlzdC5iYWNrKCkuR2V0VGl0bGUoKSA8PCAiIGlzIHRoZSBiZXN0LiIgPDwgZW5kbDsKCiAgIHJldHVybiAwOwp9