#include <iostream>
#include <typeinfo>
using namespace std;

class A
{
public:
    virtual void fV() { }
};
class B : public A
{
public:
    void mB() { }
};
class C : public A
{
public:
    void mC() { }
};

int main() {
	A *array[4] = { new A, new C, new C, new B }; // first changed to raw A
	cout << "i  A B C\n--------"<<endl; 
	for(int i = 0; i < 4; ++i) {
    	cout << i + 1 << ". " ;
    	(typeid(*array[i]) == typeid(A)) ? cout << 1 << ' ': cout << 0 << ' ';
    	(typeid(*array[i]) == typeid(B)) ? cout << 1 << ' ': cout << 0 << ' ';
    	(typeid(*array[i]) == typeid(C)) ? cout << 1 << ' ': cout << 0 << ' ';
    	cout << endl;
	}
	return 0;
}