请教一下各位大佬,我的代码怎麼了???
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
struct ins{
int len,a[250];
};
int n,m,k;
ins l[1000][1000];
ins add(ins x,ins y){
ins sum;
int r;
for(int i=0;i<max(x.len,y.len);i++){
sum.a[i]=(x.a[i]+y.a[i]+r)%10;
r=(x.a[i]+y.a[i])/10;
sum.len++;
}
if(r>0){
sum.len++;
sum.a[max(x.len,y.len)+1]=1;
}
return sum;
}
void init(){//预定义
for(int i=0;i<m;i++){
if(l[0][i].a[0]==-1) break;
l[0][i].a[0]=1;//第一行定义
}
/*1 1 1
0 -1 0
0 0 0*/
for(int i=0;i<n;i++){
if(l[0][i].a[0]==-1) break;
l[i][0].a[0]=1;//定义第一列
}
/*1 1 1
1 -1 0
1 0 0*/
}
int main(){
freopen("c.in","r",stdin);
freopen("c.out","w",stdout);
int h,li;
cin>>n>>m>>k;// 3 3 1
for(int i=0;i<k;i++){
cin>>h>>li; // 2 2
l[h-1][li-1].a[0]=-1;//障碍物格子
/*0 0 0
0 -1 0
0 0 0*/
}
init();
for(int i=1;i<n;i++){
for(int j=1;j<m;j++){
if(l[i][j].a[0]==-1) continue;
if(l[i-1][j].a[0]==-1&&l[i][j-1].a[0]==-1) l[i][j].a[0]=0;//左侧和上侧均有障碍
else if(l[i-1][j].a[0]!=-1&&l[i][j-1].a[0]!=-1) l[i][j]=add(l[i-1][j],l[i][j-1]);//均无障碍
else if(l[i-1][j].a[0]==-1) l[i][j]=l[i][j-1];//只有一个障碍,上面的障碍
else l[i][j]=l[i-1][j];//左面有障碍
}
}
for(int i=l[n-1][m-1].len-1;i>=0;i--){
cout<<l[n-1][m-1].a[i];
}
return 0;
}