#include <iostream>
#include <vector>
using namespace std;
void showAttributeUsage( const std:: vector < std:: vector < int >> & att)
{
for ( std:: size_t n = 0 ; n ! = att.size ( ) ; ++ n) {
for ( std:: size_t i = 0 ; i ! = att[ n] .size ( ) ; ++ i) {
cout << att[ n] [ i] << " " ;
}
cout << endl;
}
}
int main( )
{
int qN, aN;
cout << "Enter Number of Queries : " ;
cin >> qN;
cout << "\n Enter Number of Attributes : " ;
cin >> aN;
std:: vector < std:: vector < int >> attVal( qN, std:: vector < int > ( aN) ) ;
cout << "\n Enter Attribute Usage Values" << endl;
for ( int n = 0 ; n < qN; n++ ) { //for looping in queries
cout << "\n \n ***************** COLUMN " << n + 1 << " *******************\n \n " ;
for ( int i = 0 ; i < aN; i++ ) { //for looping in Attributes
LOOP1:
cout << "Use(Q" << n + 1 << " , " << "A" << i + 1 << ") = " ;
cin >> attVal[ n] [ i] ;
cout << endl;
if ( ( attVal[ n] [ i] > 1 ) || ( attVal[ n] [ i] < 0 ) ) {
cout << "\n \n THE VALUE MUST BE 1 or 0 . Please Re-Enter The Values\n \n " ;
goto LOOP1; //if wrong input value
}
}
}
showAttributeUsage( attVal) ;
cout << "\n \n YOUR ATTRIBUTE USAGE MATRIX IS\n \n " ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBzaG93QXR0cmlidXRlVXNhZ2UoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8aW50Pj4mIGF0dCkKewogICAgZm9yIChzdGQ6OnNpemVfdCBuID0gMDsgbiAhPSBhdHQuc2l6ZSgpOyArK24pIHsKICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpICE9IGF0dFtuXS5zaXplKCk7ICsraSkgewogICAgICAgICAgICBjb3V0IDw8IGF0dFtuXVtpXSA8PCAiICI7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBpbnQgcU4sIGFOOwogICAgY291dCA8PCAiRW50ZXIgTnVtYmVyIG9mIFF1ZXJpZXMgOiAiOwogICAgY2luID4+IHFOOwogICAgY291dCA8PCAiXG5FbnRlciBOdW1iZXIgb2YgQXR0cmlidXRlcyA6ICI7CiAgICBjaW4gPj4gYU47CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxpbnQ+PiBhdHRWYWwocU4sIHN0ZDo6dmVjdG9yPGludD4oYU4pKTsKICAgIGNvdXQgPDwgIlxuRW50ZXIgQXR0cmlidXRlIFVzYWdlIFZhbHVlcyIgPDwgZW5kbDsKICAgIGZvcihpbnQgbiA9IDA7IG4gPCBxTjsgbisrKSB7IC8vZm9yIGxvb3BpbmcgaW4gcXVlcmllcwogICAgICAgIGNvdXQgPDwgIlxuXG4qKioqKioqKioqKioqKioqKiBDT0xVTU4gIiA8PCBuICsgMSA8PCAiICoqKioqKioqKioqKioqKioqKipcblxuIjsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgYU47IGkrKykgeyAgICAgLy9mb3IgbG9vcGluZyBpbiBBdHRyaWJ1dGVzCkxPT1AxOgogICAgICAgICAgICBjb3V0IDw8ICJVc2UoUSIgPDwgbiArIDEgPDwgIiAsICIgPDwgIkEiIDw8IGkgKyAxIDw8ICIpID0gIjsKICAgICAgICAgICAgY2luID4+IGF0dFZhbFtuXVtpXTsKICAgICAgICAgICAgY291dCA8PCBlbmRsOwogICAgICAgICAgICBpZigoYXR0VmFsW25dW2ldID4gMSkgfHwgKGF0dFZhbFtuXVtpXSA8IDApKSB7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICJcblxuVEhFIFZBTFVFIE1VU1QgQkUgMSBvciAwIC4gUGxlYXNlIFJlLUVudGVyIFRoZSBWYWx1ZXNcblxuIjsKICAgICAgICAgICAgICAgIGdvdG8gTE9PUDE7ICAgICAgICAgICAgICAgICAgLy9pZiB3cm9uZyBpbnB1dCB2YWx1ZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgc2hvd0F0dHJpYnV0ZVVzYWdlKGF0dFZhbCk7CiAgICBjb3V0IDw8ICJcblxuWU9VUiBBVFRSSUJVVEUgVVNBR0UgTUFUUklYIElTXG5cbiI7CgogICAgcmV0dXJuIDA7Cn0K