wrong ans&runtime error

#include<bits/stdc++.h>
using namespace std;
int ans[1005],len;
char a[1005],b[1005];
void backw(string &a){
  int sw;
    for(int l=0;l<a.size()/2;l++){
        sw=a[l];
      a[l]=a[a.size()-l-1];
      a[a.size()-l-1]=sw;
    }
}
int main(){
    string s1,s2;
    cin>>s1>>s2;
    len=max(s1.size(),s2.size())+1;
    backw(s1);
//    cout<<s1<<"\n";
    backw(s2);
//    cout<<s2<<"\n";
    for(int i=0;i<=len;i++){
		if(i<s1.size())a[i]=s1[i];
		else a[i]='0';
	}
    for(int i=0;i<=len;i++){
		if(i<s1.size())b[i]=s2[i];
		else b[i]='0';
	}
    for(int i=0;i<max(s1.size(),s2.size());i++){
        ans[i]+=a[i]+b[i]-'0'-'0';
		if(a[i]-'0'+b[i]-'0'>=10){
       		ans[i+1]++;
       		ans[i]-=10; 
       		len++;
       }
    }
    for(int i=len-1;i>=0;i--){
	    if(ans[i]==0)len--;
	    if(ans[i]!=0)break;
	}
    for(int i=len-1;i>=0;i--)cout<<ans[i]/*<<' '*/;
	return 0;
}

A+B problem again
WrongAnswer&Runtime Error

help