Написал трехмерное дерево фенвика на c++, запускаю прогу, она вылетает с кодом ошибки 0xc00000fd, вот код:
#include <bits/stdc++.h>
using namespace std;
#define MAXN 210
long long n,x1,y_1,z1,x2,y2,z2,q,k,a[MAXN][MAXN][MAXN],oper;
struct Fenwick
{
long long t[MAXN][MAXN][MAXN];
void buildT()
{
for(int i=1; i<=MAXN; i++)
for(int j=1; j<=MAXN; j++)
for(int u=1; u<=MAXN; u++)
t[i][j][u]=1;
}
void add(long long x,long long y,long long z,long long value)
{
x++;
y++;
z++;
a[x][y][z]+=value;
for(long long i=x; i<MAXN; i+=(i & -i))
for(long long j=y; j<MAXN; j+=(j & -j))
for(long long u=z; u<MAXN; u+=(u & -u))
t[i][j][u]+=value;
}
long long sumpref3d(long long x,long long y,long long z)
{
x++;
y++;
z++;
long long sum=0;
for(long long i=x; i>0; i-=(i & -i))
for(long long j=y; j>0; j-=(j & -j))
for(long long u=z; u>0; u-=(u & -u))
sum+=t[i][j][u];
return sum;
}
long long sumpara(long long x1,long long y1,long long z1,long long x2,long long y2,long long z2)
{
return sumpref3d(x1,y1,z1)-
sumpref3d(x1,y1,z2-1)-
sumpref3d(x1,y2-1,z1)-
sumpref3d(x2-1,y1,z1)+
sumpref3d(x1,y2-1,x2-1)+
sumpref3d(x2-1,y1,z2-1)+
sumpref3d(x2-1,y2-1,z1)-
sumpref3d(x2-1,y2-1,z2-1);
}
void changeValue(long long x,long long y,long long z,long long k)
{
add(x,y,z,k);
}
};
int main()
{
Fenwick fenwick;
fenwick.buildT();
scanf("%lld",&n);
while(true)
{
scanf("%lld ", &oper);
if(oper==3)break;
else if(oper==1)
{
scanf("%lld %lld %lld %lld\n",&x1,&y_1,&z1,&k);
fenwick.changeValue(x1,y_1,z1,k);
}
else if(oper==2)
{
scanf("%lld %lld %lld %lld %lld %lld\n",&x1,&y_1,&z1,&x2,&y2,&z2);
printf("%lld\n",fenwick.sumpara(x1,y_1,z1,x2,y2,z2));
}
}
}
Вряд ли у вас такой большой стек, что в состоянии выдержать массив из 9261000 элементов по 8 байт - итого более 70 мегабайт...
Выделяйте такие большие массивы динамически.
Кроме того, вы забываете, что массивы индексируются, начиная с нуля, и выбираетесь за их границы - например, тут:
for(int i=1; i<=MAXN; i++)
for(int j=1; j<=MAXN; j++)
for(int u=1; u<=MAXN; u++)
t[i][j][u]=1;
Далее на корректность кода не смотрел.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как нужно передать класс в функцию someFunction(Example), чтоб при её вызове элемент mgrid[3][3] изменился?
Есть обработчик onscrollСобытие onscroll происходит, когда элемент прокручивается