Se me ocurre que pudieras ir comparando linea a linea, con un buffer lo suficientemente grande como para que abarcara toda la linea y:
copiado = false;
while( !fi.eof() ){
if ( !strcmp( lineaP1, lineaP2 ) ){
copiado = true;
break;
}
}
if ( copiado )
cout << "El programa está copiado" << endl;
else
cout << "No hay copia" << endl;
Es la solución "más a pelo" que se me ocurre. Saludos!