#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <memory.h>
#define bit(_x_) (1U << (_x_))
void randomfillarray( unsigned int * arr, size_t size ) {
for ( int i = 0; i < size; i++ )
}
int main( ) {
unsigned int arr[10];
size_t size = sizeof arr / sizeof * arr;
randomfillarray( arr, size );
unsigned int * resultantcouple
= malloc( sizeof arr
); memcpy( resultantcouple
, arr
, sizeof arr
);
for ( int i = 0; i < size; i++ )
printf( i
? " %u" : "%u", arr
[i
] );
int success = 0;
for ( unsigned int thebit = bit( sizeof( int ) * 8 - 1 ); thebit; thebit >>= 1 ) {
int count = 0;
int * indices = NULL;
for ( int i = 0; i < size; i++ ) {
if ( resultantcouple[i] & thebit ) {
indices
= realloc( indices
, ++count
* sizeof * indices
); indices[count - 1] = i;
}
}
if ( count >= 2 ) {
size = count;
for ( int i = 0; i < size; i++ )
resultantcouple[i] = resultantcouple[indices[i]];
resultantcouple
= realloc( resultantcouple
, size
* sizeof * resultantcouple
); }
if ( size == 2 ) {
success = 1;
break;
}
}
if ( success )
printf( "Success! %u and %u are the ones.", resultantcouple
[0], resultantcouple
[1] ); else
printf( "Failure! Either all pairs are bitwise distinct, or there are less than 2 elements, or something else..." );
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KI2luY2x1ZGUgPG1lbW9yeS5oPgoKI2RlZmluZSBiaXQoX3hfKSAoMVUgPDwgKF94XykpCgp2b2lkIHJhbmRvbWZpbGxhcnJheSggdW5zaWduZWQgaW50ICogYXJyLCBzaXplX3Qgc2l6ZSApIHsKCXNyYW5kKCB0aW1lKCBOVUxMICkgKTsKCWZvciAoIGludCBpID0gMDsgaSA8IHNpemU7IGkrKyApCgkJYXJyW2ldID0gcmFuZCggKTsKfQoKaW50IG1haW4oICkgewoJdW5zaWduZWQgaW50IGFyclsxMF07CglzaXplX3Qgc2l6ZSA9IHNpemVvZiBhcnIgLyBzaXplb2YgKiBhcnI7CglyYW5kb21maWxsYXJyYXkoIGFyciwgc2l6ZSApOwoKCXVuc2lnbmVkIGludCAqIHJlc3VsdGFudGNvdXBsZSA9IG1hbGxvYyggc2l6ZW9mIGFyciApOwoJbWVtY3B5KCByZXN1bHRhbnRjb3VwbGUsIGFyciwgc2l6ZW9mIGFyciApOwoKCWZvciAoIGludCBpID0gMDsgaSA8IHNpemU7IGkrKyApCgkJcHJpbnRmKCBpID8gIiAldSIgOiAiJXUiLCBhcnJbaV0gKTsKCXB1dGNoYXIoICdcbicgKTsKCglpbnQgc3VjY2VzcyA9IDA7CgoJZm9yICggdW5zaWduZWQgaW50IHRoZWJpdCA9IGJpdCggc2l6ZW9mKCBpbnQgKSAqIDggLSAxICk7IHRoZWJpdDsgdGhlYml0ID4+PSAxICkgewoJCWludCBjb3VudCA9IDA7CgkJaW50ICogaW5kaWNlcyA9IE5VTEw7CgkJZm9yICggaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrICkgewoJCQlpZiAoIHJlc3VsdGFudGNvdXBsZVtpXSAmIHRoZWJpdCApIHsKCQkJCWluZGljZXMgPSByZWFsbG9jKCBpbmRpY2VzLCArK2NvdW50ICogc2l6ZW9mICogaW5kaWNlcyApOwoJCQkJaW5kaWNlc1tjb3VudCAtIDFdID0gaTsKCQkJfQoJCX0KCQlpZiAoIGNvdW50ID49IDIgKSB7CgkJCXNpemUgPSBjb3VudDsKCQkJZm9yICggaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrICkKCQkJCXJlc3VsdGFudGNvdXBsZVtpXSA9IHJlc3VsdGFudGNvdXBsZVtpbmRpY2VzW2ldXTsKCQkJcmVzdWx0YW50Y291cGxlID0gcmVhbGxvYyggcmVzdWx0YW50Y291cGxlLCBzaXplICogc2l6ZW9mICogcmVzdWx0YW50Y291cGxlICk7CgkJfQoJCWlmICggc2l6ZSA9PSAyICkgewoJCQlzdWNjZXNzID0gMTsKCQkJYnJlYWs7CgkJfQoJCWZyZWUoIGluZGljZXMgKTsKCX0KCQoJaWYgKCBzdWNjZXNzICkKCQlwcmludGYoICJTdWNjZXNzISAldSBhbmQgJXUgYXJlIHRoZSBvbmVzLiIsIHJlc3VsdGFudGNvdXBsZVswXSwgcmVzdWx0YW50Y291cGxlWzFdICk7CgllbHNlCgkJcHJpbnRmKCAiRmFpbHVyZSEgRWl0aGVyIGFsbCBwYWlycyBhcmUgYml0d2lzZSBkaXN0aW5jdCwgb3IgdGhlcmUgYXJlIGxlc3MgdGhhbiAyIGVsZW1lbnRzLCBvciBzb21ldGhpbmcgZWxzZS4uLiIgKTsKCgoJcHV0Y2hhciggJ1xuJyApOwoJcmV0dXJuIDA7Cn0=