Каскадное слияние)


Помогите с реализации этого алгоритма. Хотя бы посоветуйте что да как)
И еще возникает ошибка в строке 72

#include<iostream>
#include<fstream>

using namespace std;


int main()
{
int n=0,a=0;
int i;
int level;//Количество уровней
int p=5;//Количество файлов
int A;
setlocale(LC_ALL,"rus");

fstream file1("F1.txt");
fstream file2("F2.txt");
fstream file3("F3.txt");
fstream file4("F4.txt");
fstream file5("F5.txt");
fstream file6("F6.txt");



if(file1.is_open()&&file2.is_open()&&file3.is_open()&&file4. is_open()&&file5.is_open()&&file6.is_open())// Проверка на открытие файлов
cout<<"Все файлы успешно открыты!!!"<<endl;
else
cout<<"Какой-то из файлов не удалось открыть:("<<endl;

ofstream f;// Создаем файловую переменную для записи в файл


f.open("F1.txt",ios::trunc);// Открытие файла на запись, режим "очистить файл"

cout<<"Введите количество чисел n=";
cin>>n;


for( i=0;i<n;i++)
{

a=1+rand()%100;
f<<a<<' ';
}

f.close();


int *mas=new int[n];// создание динамического массива для данных из файла
ifstream f1("F1.txt");// создание файловой переменной, поток для чтения из файла

for(i = 0; i < n; i++)
{
f1 >> mas[i];
}
f1.close(); // закрытие потока

cout << "Содержимое файла "<< endl;
for(i = 0; i < n; i++) // вывод на экран содержимого массива
{
cout << mas[i] << endl;
}

cout<<"Введите уровень"<<endl;
cin>>level;

for( i=1;i<=level;i++)
{

for(int j=2;j<=p;j++)
{
A[p-j]+=A[p-j+1];//тут ошибка 




}










}







system("pause");
return 0;
}

какая?

переменная p подчеркнутая в компиляторе (выражение должно иметь тип указателя на объект)

Так А тут просто одно число, а не массив.

Ладно это я понял.
А как вот это сделать? Я цыкл начал, а дальше не разберусь

Так тут вроде бы просто пишут, что надо создать 4 массива (A, AA, D, TAPE) с размером Т, заполнить первые 3 нулями, в первые элементы (нулевые в С++, тут видимо нумерация с 1) AA и D присвоить 1, TAPE заполнить числами от 1 до Т (может быть удобнее от 0 до Т-1, смотря для чего это надо потом).