#include "wombats.h"
#include <iostream>
using namespace std;
int math[5005][202];
int matv[5005][202];
static int aint[18005][202][202];
int spar[205];
int bucket=0,c,r;
int inf=50000000;
void build(int node,int st,int dr)
{
if(dr-st<=bucket)
{
for(int i=1; i<c; i++)
{
spar[i]=spar[i-1]+math[st][i-1];
}
for(int i=0; i<c; i++)
{
for(int j=0; j<c; j++)
{
aint[node][i][j]=spar[max(i,j)]-spar[min(i,j)];
}
}
return;
}
int mij=(st+dr)/2;
build(node*2,st,mij);
build(node*2+1,mij+1,dr);
for(int i=0; i<c; i++)
{
for(int j=0; j<c; j++)
{
aint[node][i][j]=inf;
for(int z=0; z<c; z++)
{
aint[node][i][j]=min(aint[node][i][j],aint[node*2][i][z]+aint[node*2+1][z][j]+matv[mij][z]);
}
}
}
}
void recalc(int node,int st,int dr,int poz)
{
if(poz==st && poz==dr)
{
for(int i=1; i<c; i++)
{
spar[i]=spar[i-1]+math[st][i-1];
}
for(int i=0; i<c; i++)
{
for(int j=0; j<c; j++)
{
aint[node][i][j]=spar[max(i,j)]-spar[min(i,j)];
}
}
return;
}
if(poz>dr || poz<st)
{
return;
}
int mij=(st+dr)/2;
recalc(node*2,st,mij,poz);
recalc(node*2+1,mij+1,dr,poz);
for(int i=0; i<c; i++)
{
for(int j=0; j<c; j++)
{
aint[node][i][j]=inf;
for(int z=0; z<c; z++)
{
aint[node][i][j]=min(aint[node][i][j],aint[node*2][i][z]+aint[node*2+1][z][j]+matv[mij][z]);
}
}
}
}
void init(int R, int C, int H[5000][200], int V[5000][200])
{
c=C;
r=R;
for(int i=0; i<R; i++)
{
for(int j=0; j<C-1; j++)
{
math[i][j]=H[i][j];
}
}
for(int i=0; i<R-1; i++)
{
for(int j=0; j<C; j++)
{
matv[i][j]=V[i][j];
}
}
build(1,0,r-1);
}
void changeH(int P, int Q, int W)
{
math[P][Q]=W;
recalc(1,0,r-1,P);
}
void changeV(int P, int Q, int W)
{
matv[P][Q]=W;
recalc(1,0,r-1,P);
}
int escape(int V1, int V2)
{
int minim=inf;
int mij=(r-1)/2;
for(int i=0;i<c;i++)
{
minim=min(minim,aint[2][V1][i]+aint[3][i][V2]+matv[mij][i]);
}
return minim;
}
컴파일 시 표준 에러 (stderr) 메시지
/usr/lib/gcc/x86_64-linux-gnu/13/libstdc++.a(ios_init.o): in function `std::ios_base::Init::Init()':
(.text._ZNSt8ios_base4InitC2Ev+0x1f): failed to convert GOTPCREL relocation against '_ZNSt8ios_base4Init11_S_refcountE'; relink with --no-relax
(.text._ZNSt8ios_base4InitC2Ev+0x5f): relocation truncated to fit: R_X86_64_PC32 against symbol `__gnu_internal::buf_cout_sync' defined in .bss._ZN14__gnu_internal13buf_cout_syncE section in /usr/lib/gcc/x86_64-linux-gnu/13/libstdc++.a(globals_io.o)
(.text._ZNSt8ios_base4InitC2Ev+0x66): relocation truncated to fit: R_X86_64_PC32 against symbol `__gnu_internal::buf_cout_sync' defined in .bss._ZN14__gnu_internal13buf_cout_syncE section in /usr/lib/gcc/x86_64-linux-gnu/13/libstdc++.a(globals_io.o)
(.text._ZNSt8ios_base4InitC2Ev+0x71): relocation truncated to fit: R_X86_64_PC32 against symbol `__gnu_internal::buf_cout_sync' defined in .bss._ZN14__gnu_internal13buf_cout_syncE section in /usr/lib/gcc/x86_64-linux-gnu/13/libstdc++.a(globals_io.o)
(.text._ZNSt8ios_base4InitC2Ev+0x7c): relocation truncated to fit: R_X86_64_PC32 against symbol `__gnu_internal::buf_cout_sync' defined in .bss._ZN14__gnu_internal13buf_cout_syncE section in /usr/lib/gcc/x86_64-linux-gnu/13/libstdc++.a(globals_io.o)
(.text._ZNSt8ios_base4InitC2Ev+0xa0): relocation truncated to fit: R_X86_64_PC32 against symbol `__gnu_internal::buf_cout_sync' defined in .bss._ZN14__gnu_internal13buf_cout_syncE section in /usr/lib/gcc/x86_64-linux-gnu/13/libstdc++.a(globals_io.o)
(.text._ZNSt8ios_base4InitC2Ev+0xab): relocation truncated to fit: R_X86_64_PC32 against symbol `__gnu_internal::buf_cout_sync' defined in .bss._ZN14__gnu_internal13buf_cout_syncE section in /usr/lib/gcc/x86_64-linux-gnu/13/libstdc++.a(globals_io.o)
(.text._ZNSt8ios_base4InitC2Ev+0xc8): relocation truncated to fit: R_X86_64_PC32 against symbol `__gnu_internal::buf_cout_sync' defined in .bss._ZN14__gnu_internal13buf_cout_syncE section in /usr/lib/gcc/x86_64-linux-gnu/13/libstdc++.a(globals_io.o)
(.text._ZNSt8ios_base4InitC2Ev+0xe1): relocation truncated to fit: R_X86_64_PC32 against symbol `__gnu_internal::buf_cout_sync' defined in .bss._ZN14__gnu_internal13buf_cout_syncE section in /usr/lib/gcc/x86_64-linux-gnu/13/libstdc++.a(globals_io.o)
(.text._ZNSt8ios_base4InitC2Ev+0xf4): relocation truncated to fit: R_X86_64_PC32 against symbol `__gnu_internal::buf_cin_sync' defined in .bss._ZN14__gnu_internal12buf_cin_syncE section in /usr/lib/gcc/x86_64-linux-gnu/13/libstdc++.a(globals_io.o)
(.text._ZNSt8ios_base4InitC2Ev+0xfb): relocation truncated to fit: R_X86_64_PC32 against symbol `__gnu_internal::buf_cout_sync' defined in .bss._ZN14__gnu_internal13buf_cout_syncE section in /usr/lib/gcc/x86_64-linux-gnu/13/libstdc++.a(globals_io.o)
(.text._ZNSt8ios_base4InitC2Ev+0x101): additional relocation overflows omitted from the output
(.text._ZNSt8ios_base4InitC2Ev+0x1ed): failed to convert GOTPCREL relocation against '_ZSt4cout'; relink with --no-relax
(.text._ZNSt8ios_base4InitC2Ev+0x252): failed to convert GOTPCREL relocation against '_ZSt3cin'; relink with --no-relax
(.text._ZNSt8ios_base4InitC2Ev+0x2bc): failed to convert GOTPCREL relocation against '_ZSt4cerr'; relink with --no-relax
(.text._ZNSt8ios_base4InitC2Ev+0x316): failed to convert GOTPCREL relocation against '_ZSt4clog'; relink with --no-relax
(.text._ZNSt8ios_base4InitC2Ev+0x50f): failed to convert GOTPCREL relocation against '_ZSt5wcout'; relink with --no-relax
(.text._ZNSt8ios_base4InitC2Ev+0x57d): failed to convert GOTPCREL relocation against '_ZSt4wcin'; relink with --no-relax
(.text._ZNSt8ios_base4InitC2Ev+0x5f0): failed to convert GOTPCREL relocation against '_ZSt5wcerr'; relink with --no-relax
(.text._ZNSt8ios_base4InitC2Ev+0x654): failed to convert GOTPCREL relocation against '_ZSt5wclog'; relink with --no-relax
/usr/bin/ld: final link failed
collect2: error: ld returned 1 exit status