#include <iostream>
using namespace std;
template<typename T=long>
struct Rect{
T left, top, right, bottom;
Rect( T l, T t, T r, T b ) : left(l), top(t), right(r), bottom(b) { }
bool intersects( const Rect<T>& other ) const{
return other.left <= right && other.right >= left
&& other.top <= bottom && other.bottom >= top ;
}
};
int main(){
cout << "Intersects: "
<< Rect<>( 0, 0, 20, 20 ).intersects( { 10, 10, 100, 100 } );
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD1sb25nPgpzdHJ1Y3QgUmVjdHsKICAgVCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgIFJlY3QoIFQgbCwgVCB0LCBUIHIsIFQgYiApIDogbGVmdChsKSwgdG9wKHQpLCByaWdodChyKSwgYm90dG9tKGIpIHsgfQogICBib29sIGludGVyc2VjdHMoIGNvbnN0IFJlY3Q8VD4mIG90aGVyICkgY29uc3R7CiAgICAgIHJldHVybiBvdGhlci5sZWZ0IDw9IHJpZ2h0ICAmJiBvdGhlci5yaWdodCAgPj0gbGVmdAogICAgICAgICAmJiAgb3RoZXIudG9wICA8PSBib3R0b20gJiYgb3RoZXIuYm90dG9tID49IHRvcCA7CiAgIH0KfTsKCmludCBtYWluKCl7CiAgIGNvdXQgPDwgIkludGVyc2VjdHM6ICIKICAgICAgICA8PCBSZWN0PD4oIDAsIDAsIDIwLCAyMCApLmludGVyc2VjdHMoIHsgMTAsIDEwLCAxMDAsIDEwMCB9ICk7CiAgIHJldHVybiAwOwp9