#include <bits/stdc++.h>↵
↵
using namespace std;↵
↵
#define endl '\n'↵
#define int long long↵
↵
const int N = 1e5 + 20;↵
↵
int m[N];↵
↵
struct comp {↵
bool operator() (const pair <int , int> &lhs, const pair <int , int> &rhs) const {↵
return lhs.first > rhs.first;↵
}↵
};↵
↵
↵
int32_t main()↵
{↵
ios_base :: sync_with_stdio(0);↵
cin.tie(0);↵
↵
set <pair <int , int> , comp> s;↵
s.insert({1 , 1});↵
s.insert({1 , 2});↵
s.insert({1 , 3});↵
s.insert({1 , 4});↵
↵
for(auto x : s)↵
cout << "(" << x.first << "
cout << endl;↵
return 0;↵
}↵
↵
↵
~~~~~↵
↵
I expected the above code to print :↵
1 2↵
1 3↵
1 4↵
But it only prints :↵
↵
↵
However, that works fine without the comparator.↵
Why is this strange thing happening?