#if __cplusplus >= 201103L
#include <utility>
#include <algorithm>
#endif
#if __cplusplus >= 201103L
template < class RefIt, class JudgedIt, class BinaryPredicate>
bool check_repelled( RefIt first, RefIt last, JudgedIt target, BinaryPredicate p) {
return last ! = std:: find_if ( first, last, [ p, target] ( i) - > bool { p( i, * target) ; } ) ;
}
#else
template < class RefIt, class JudgedIt, class BinaryPredicate>
bool check_repelled( RefIt first, RefIt last, JudgedIt target, BinaryPredicate p) {
for ( RefIt i = first; i ! = last; ++ i)
if ( p( * i, * target) )
return true ;
return false ;
}
#endif
template < class InputIt, class OutputIt, class BinaryPredicate>
OutputIt remove_copy_repelled( InputIt first, InputIt last, OutputIt d_first, BinaryPredicate p) {
OutputIt d_end = d_first;
for ( ; first ! = last; ++ first) {
if ( ! check_repelled( d_first, d_end, first, p) )
* d_end++ = * first;
}
return d_end;
}
template < class ForwardIt, class BinaryPredicate>
ForwardIt remove_repelled( ForwardIt first, ForwardIt last, BinaryPredicate p) {
ForwardIt i, j;
for ( i = first; i ! = last; ++ i)
if ( check_repelled( first, i, i, p) )
break ;
if ( i == last)
return last;
for ( j = i; ++ j ! = last; )
if ( ! check_repelled( first, i, j, p) )
#if __cplusplus >= 201103L
* i++ = std:: move ( * j) ;
#else
* i++ = * j;
#endif
return i;
}
int main( ) {
// your code goes here
return 0 ;
}
I2lmIF9fY3BsdXNwbHVzID49IDIwMTEwM0wKI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNlbmRpZgoKCiNpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCnRlbXBsYXRlPGNsYXNzIFJlZkl0LCBjbGFzcyBKdWRnZWRJdCwgY2xhc3MgQmluYXJ5UHJlZGljYXRlPgpib29sIGNoZWNrX3JlcGVsbGVkKFJlZkl0IGZpcnN0LCBSZWZJdCBsYXN0LCBKdWRnZWRJdCB0YXJnZXQsIEJpbmFyeVByZWRpY2F0ZSBwKXsKICAgIHJldHVybiBsYXN0ICE9IHN0ZDo6ZmluZF9pZihmaXJzdCwgbGFzdCwgW3AsIHRhcmdldF0oaSktPmJvb2x7IHAoaSwgKnRhcmdldCk7IH0pOwp9CiNlbHNlCnRlbXBsYXRlPGNsYXNzIFJlZkl0LCBjbGFzcyBKdWRnZWRJdCwgY2xhc3MgQmluYXJ5UHJlZGljYXRlPgpib29sIGNoZWNrX3JlcGVsbGVkKFJlZkl0IGZpcnN0LCBSZWZJdCBsYXN0LCBKdWRnZWRJdCB0YXJnZXQsIEJpbmFyeVByZWRpY2F0ZSBwKXsKICAgIGZvcihSZWZJdCBpID0gZmlyc3Q7IGkgIT0gbGFzdDsgKytpKQogICAgICAgIGlmKHAoKmksICp0YXJnZXQpKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIHJldHVybiBmYWxzZTsKfQojZW5kaWYKCnRlbXBsYXRlPGNsYXNzIElucHV0SXQsIGNsYXNzIE91dHB1dEl0LCBjbGFzcyBCaW5hcnlQcmVkaWNhdGU+Ck91dHB1dEl0IHJlbW92ZV9jb3B5X3JlcGVsbGVkKElucHV0SXQgZmlyc3QsIElucHV0SXQgbGFzdCwgT3V0cHV0SXQgZF9maXJzdCwgQmluYXJ5UHJlZGljYXRlIHApewogICAgT3V0cHV0SXQgZF9lbmQgPSBkX2ZpcnN0OwogICAgZm9yKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCl7CiAgICAgICAgaWYoIWNoZWNrX3JlcGVsbGVkKGRfZmlyc3QsIGRfZW5kLCBmaXJzdCwgcCkpCiAgICAgICAgICAgICpkX2VuZCsrID0gKmZpcnN0OwogICAgfQogICAgcmV0dXJuIGRfZW5kOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBGb3J3YXJkSXQsIGNsYXNzIEJpbmFyeVByZWRpY2F0ZT4KRm9yd2FyZEl0IHJlbW92ZV9yZXBlbGxlZChGb3J3YXJkSXQgZmlyc3QsIEZvcndhcmRJdCBsYXN0LCBCaW5hcnlQcmVkaWNhdGUgcCl7CiAgICBGb3J3YXJkSXQgaSwgajsKICAgIGZvcihpID0gZmlyc3Q7IGkgIT0gbGFzdDsgKytpKQogICAgICAgIGlmKGNoZWNrX3JlcGVsbGVkKGZpcnN0LCBpLCBpLCBwKSkKICAgICAgICAgICAgYnJlYWs7CiAgICBpZihpID09IGxhc3QpCiAgICAgICAgcmV0dXJuIGxhc3Q7CiAgICBmb3IoaiA9IGk7ICsraiAhPSBsYXN0OykKICAgICAgICBpZighY2hlY2tfcmVwZWxsZWQoZmlyc3QsIGksIGosIHApKQojaWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTAogICAgICAgICAgICAqaSsrID0gc3RkOjptb3ZlKCpqKTsKI2Vsc2UKICAgICAgICAgICAgKmkrKyA9ICpqOwojZW5kaWYKICAgIHJldHVybiBpOwp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXJldHVybiAwOwp9
compilation info
prog.cpp: In function ‘bool check_repelled(RefIt, RefIt, JudgedIt, BinaryPredicate)’:
prog.cpp:10:58: error: ‘i’ has not been declared
return last != std::find_if(first, last, [p, target](i)->bool{ p(i, *target); });
^
prog.cpp: In lambda function:
prog.cpp:10:70: error: ‘i’ was not declared in this scope
return last != std::find_if(first, last, [p, target](i)->bool{ p(i, *target); });
^
prog.cpp:10:83: warning: no return statement in function returning non-void [-Wreturn-type]
return last != std::find_if(first, last, [p, target](i)->bool{ p(i, *target); });
^
stdout