#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
// dostepne od C++11
template<typename InputIterator,
typename OutputIterator,
typename Predicate>
OutputIterator copy_if(InputIterator begin,
InputIterator end,
OutputIterator destBegin,
Predicate p)
{
while (begin != end) {
if (p(*begin)) *destBegin++ = *begin;
++begin;
}
return destBegin;
}
bool czyParzysta(int i)
{
return i%2==0;
}
int main() {
int tab[10]={1,2,3,4,5,6,7,8,9,10};
copy_if(tab, tab + sizeof(tab)/sizeof(tab[0]),
ostream_iterator<int>(cout, "\n"),
czyParzysta);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aXRlcmF0b3I+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gZG9zdGVwbmUgb2QgQysrMTEgCnRlbXBsYXRlPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsCgl0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwKCXR5cGVuYW1lIFByZWRpY2F0ZT4KT3V0cHV0SXRlcmF0b3IgY29weV9pZihJbnB1dEl0ZXJhdG9yIGJlZ2luLAoJCUlucHV0SXRlcmF0b3IgZW5kLAoJCU91dHB1dEl0ZXJhdG9yIGRlc3RCZWdpbiwKCQlQcmVkaWNhdGUgcCkKewoJd2hpbGUgKGJlZ2luICE9IGVuZCkgewoJCWlmIChwKCpiZWdpbikpICpkZXN0QmVnaW4rKyA9ICpiZWdpbjsKCQkrK2JlZ2luOwoJfQoJcmV0dXJuIGRlc3RCZWdpbjsKfQoKYm9vbCBjenlQYXJ6eXN0YShpbnQgaSkgCnsKICAgcmV0dXJuIGklMj09MDsgCn0gCgppbnQgbWFpbigpIHsKCWludCB0YWJbMTBdPXsxLDIsMyw0LDUsNiw3LDgsOSwxMH07IAoKICAgIGNvcHlfaWYodGFiLCB0YWIgKyBzaXplb2YodGFiKS9zaXplb2YodGFiWzBdKSwKICAgICAgICBvc3RyZWFtX2l0ZXJhdG9yPGludD4oY291dCwgIlxuIiksCiAgICAgICAgY3p5UGFyenlzdGEpOyAgICAKICAgICAgICAKCXJldHVybiAwOwp9