#include <iostream>
#include <string>
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();
}
bool operator!=(const Movie& movie1, const Movie& movie2) {
return !(movie1 == movie2);
}
bool operator<(const Movie& movie1, const Movie& movie2) {
return movie1.GetVoteDifference() < movie2.GetVoteDifference();
}
bool operator>(const Movie& movie1, const Movie& movie2) {
return movie2 < movie1;
}
bool operator<=(const Movie& movie1, const Movie& movie2) {
return !(movie1 > movie2);
}
bool operator>=(const Movie& movie1, const Movie& movie2) {
return !(movie1 < movie2);
}
int main() {
Movie movie1("Cars");
Movie movie2("Up");
Movie movie3("It");
Movie movie4("Frozen");
movie1.SetVotes(11, 6);
movie2.SetVotes(13, 5);
movie3.SetVotes(14, 4);
movie4.SetVotes(14, 2);
if (movie1 == movie3) {
cout << movie1.GetTitle();
cout << " is equal to ";
cout << movie3.GetTitle() << endl;
}
if (movie1 >= movie2) {
cout << movie1.GetTitle();
cout << " is at least as good as ";
cout << movie2.GetTitle() << endl;
}
else if (movie1 < movie2) {
cout << movie1.GetTitle();
cout << " is worse than ";
cout << movie2.GetTitle() << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgTW92aWUgewpwdWJsaWM6CiAgIE1vdmllKHN0cmluZyBtb3ZpZVRpdGxlKTsKICAgdm9pZCBTZXRWb3RlcyhpbnQgbnVtVXBWb3RlcywgaW50IG51bURvd25Wb3RlcykgewogICAgICB1cFZvdGVzID0gbnVtVXBWb3RlczsKICAgICAgZG93blZvdGVzID0gbnVtRG93blZvdGVzOwogICB9CiAgIHN0cmluZyBHZXRUaXRsZSgpIGNvbnN0IHsgcmV0dXJuIHRpdGxlOyB9CiAgIGludCBHZXRWb3RlRGlmZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIHVwVm90ZXMgLSBkb3duVm90ZXM7IH0KCnByaXZhdGU6CiAgIHN0cmluZyB0aXRsZTsKICAgaW50IHVwVm90ZXM7CiAgIGludCBkb3duVm90ZXM7Cn07CgpNb3ZpZTo6TW92aWUoc3RyaW5nIG1vdmllVGl0bGUpIHsKICAgdGl0bGUgPSBtb3ZpZVRpdGxlOwogICB1cFZvdGVzID0gMDsKICAgZG93blZvdGVzID0gMDsKfQoKYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1vdmllJiBtb3ZpZTEsIGNvbnN0IE1vdmllJiBtb3ZpZTIpIHsKICAgcmV0dXJuIG1vdmllMS5HZXRWb3RlRGlmZmVyZW5jZSgpID09IG1vdmllMi5HZXRWb3RlRGlmZmVyZW5jZSgpOwp9Cgpib29sIG9wZXJhdG9yIT0oY29uc3QgTW92aWUmIG1vdmllMSwgY29uc3QgTW92aWUmIG1vdmllMikgeyAKICAgcmV0dXJuICEobW92aWUxID09IG1vdmllMik7IAp9Cgpib29sIG9wZXJhdG9yPChjb25zdCBNb3ZpZSYgbW92aWUxLCBjb25zdCBNb3ZpZSYgbW92aWUyKSB7CiAgIHJldHVybiBtb3ZpZTEuR2V0Vm90ZURpZmZlcmVuY2UoKSA8IG1vdmllMi5HZXRWb3RlRGlmZmVyZW5jZSgpOwp9Cgpib29sIG9wZXJhdG9yPihjb25zdCBNb3ZpZSYgbW92aWUxLCBjb25zdCBNb3ZpZSYgbW92aWUyKSB7IAogICByZXR1cm4gbW92aWUyIDwgbW92aWUxOyAKfQoKYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE1vdmllJiBtb3ZpZTEsIGNvbnN0IE1vdmllJiBtb3ZpZTIpIHsgCiAgIHJldHVybiAhKG1vdmllMSA+IG1vdmllMik7IAp9Cgpib29sIG9wZXJhdG9yPj0oY29uc3QgTW92aWUmIG1vdmllMSwgY29uc3QgTW92aWUmIG1vdmllMikgeyAKICAgcmV0dXJuICEobW92aWUxIDwgbW92aWUyKTsgCn0KCmludCBtYWluKCkgewogICBNb3ZpZSBtb3ZpZTEoIkNhcnMiKTsKICAgTW92aWUgbW92aWUyKCJVcCIpOwogICBNb3ZpZSBtb3ZpZTMoIkl0Iik7CiAgIE1vdmllIG1vdmllNCgiRnJvemVuIik7CgogICBtb3ZpZTEuU2V0Vm90ZXMoMTEsIDYpOwogICBtb3ZpZTIuU2V0Vm90ZXMoMTMsIDUpOwogICBtb3ZpZTMuU2V0Vm90ZXMoMTQsIDQpOwogICBtb3ZpZTQuU2V0Vm90ZXMoMTQsIDIpOwoKICAgaWYgKG1vdmllMSA9PSBtb3ZpZTMpIHsKICAgICAgY291dCA8PCBtb3ZpZTEuR2V0VGl0bGUoKTsKICAgICAgY291dCA8PCAiIGlzIGVxdWFsIHRvICI7IAogICAgICBjb3V0IDw8IG1vdmllMy5HZXRUaXRsZSgpIDw8IGVuZGw7CiAgIH0KCiAgIGlmIChtb3ZpZTEgPj0gbW92aWUyKSB7CiAgICAgIGNvdXQgPDwgbW92aWUxLkdldFRpdGxlKCk7CiAgICAgIGNvdXQgPDwgIiBpcyBhdCBsZWFzdCBhcyBnb29kIGFzICI7CiAgICAgIGNvdXQgPDwgbW92aWUyLkdldFRpdGxlKCkgPDwgZW5kbDsKICAgfSAKICAgZWxzZSBpZiAobW92aWUxIDwgbW92aWUyKSB7CiAgICAgIGNvdXQgPDwgbW92aWUxLkdldFRpdGxlKCk7CiAgICAgIGNvdXQgPDwgIiBpcyB3b3JzZSB0aGFuICI7CiAgICAgIGNvdXQgPDwgbW92aWUyLkdldFRpdGxlKCkgPDwgZW5kbDsKICAgfQoKICAgcmV0dXJuIDA7Cn0=