Tried solving JULKA problem on spoj. Tried all the test cases available. Works fine for all. But still wrong answer. If anyone can help me out, I would be grateful
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
inline void div_2(int arr[],int n)
{
int quo,rem=0;
while(n--)
{
if(arr[n])
break;
}
for(int i=n;i>=0;i--)
{
quo=(arr[i]+10*rem)/2;
rem=arr[i]%2;
arr[i]=quo;
}
}
inline void subtract (int arr1[], int arr2[],int n)
{
int share,term,i;
for(i=0;i<n;i++)
{
if(arr1[i]<arr2[i])
{
share=10;
arr1[i+1]--;
}
else
share=0;
arr1[i]=share+arr1[i]-arr2[i];
}
}
inline void display(int arr[],int n)
{
int flag=0;
while(n--)
{
if(arr[n])
{
flag=1;
break;
}
}
if(flag)
{
for(int i=n;i>=0;i--)
printf("%d",arr[i]);
}
else
printf("0");
}
inline int add(int arr1[],int arr2[],int n)
{
int carry=0,term,i;
for(i=0;i<n;i++)
{
if(arr2[i])
{
term=arr1[i]+arr2[i]+carry;
carry=term/10;
arr2[i]=term%10;
if(carry&&i==n-1)
n++;
}
else{
arr2[i]=arr1[i]+carry;
carry=0;
}
}
return n;
}
inline void str_arr(char str[],int arr[],int n)
{
for(int i=0;i<n;i++)
arr[n-1-i]=str[i]-'0';
}
int main()
{
int t=10,*arr1,*arr2,n1,n2;
char str1[102],str2[102];
while(t--)
{
cin>>str1;
n1=strlen(str1);
arr2=(int *)calloc(n1+1,sizeof(int));
arr1=(int *)calloc(n1+1,sizeof(int));
str_arr(str1,arr1,n1);
cin>>str2;
n2=strlen(str2);
str_arr(str2,arr2,n2);
/*display(arr2,n1);
cout<<"\n";
display(arr1,n1);
cout<<"\n";*/
n1=add(arr1,arr2,n1);
/*display(arr2,n1);
cout<<"\n";*/
div_2(arr2,n1);
subtract(arr1,arr2,n1);
display(arr2,n1);
printf("\n");
display(arr1,n1);
printf("\n");
free(arr1);
free(arr2);
}
return 0;
}