Quantcast
Channel: CodeChef Discuss - latest questions
Viewing all articles
Browse latest Browse all 39796

PALIN: getting Runtime error

$
0
0
#include<stdio.h>
#include<string.h>
int copystring(char *a,long int mid1,long int mid2);
int start(char *a);
int check(char *a,long int mid1,long int mid2)
{
    if(mid1<0)
        return 1;
    if(a[mid1]<a[mid2])
    {
        a[mid2]=a[mid1];
        return 1;
    }
    if(a[mid1]>a[mid2])
        return 0;
    else return check(a,mid1-1,mid2+1);
}


int increment(char *a,long int pos)
{
    if(pos<0)
        return 0;
    if(a[pos]!='9')
    {
        a[pos]++;
        return 0;
    }
    if(pos==0)
    {
        long int i;
        long int len = strlen(a);
        for(i=1;i<=len;i++)
        {
            a[i]='0';
        }
        a[0]='1';
        a[len]='1';
        a[len+1]='\0';
        return 1;
    }
    a[pos]='0';
    return increment(a,pos-1);
}

int match(char *a,long int mid1,long int mid2)
{
    int flag=0;
    if(mid1<0)
        return 0;   
    if(a[mid1]==a[mid2])
    {
        if(check(a,mid1-1,mid2+1))
        {
            flag=increment(a,mid1);
            if(flag==1)
            {
                return 0;
            }
            a[mid2]=a[mid1];
            copystring(a,mid1,mid2);
            return 0;
        }
        match(a,mid1-1,mid2+1);
        return 0;
    }
    if(a[mid1]>a[mid2])
    {   
        a[mid2]=a[mid1];
        copystring(a,mid1-1,mid2+1);
        return 0;
    }
    else
    {
        increment(a,mid1);
        a[mid2]=a[mid1];
        copystring(a,mid1,mid2);
        return 0;
    }
}

int copystring(char *a,long int mid1,long int mid2)
{
    if(mid1<0)
        return 0;
    a[mid2]=a[mid1];
    copystring(a,mid1-1,mid2+1);
    return 0;
}


int start(char *a)
{
    long int len;
    len=strlen(a);
    long int mid1 = len /(long int) 2,mid2;
    mid2=mid1;
    if(len%2 == 0)
        mid1--;         
    match(a,mid1,mid2);
    return 0;
}

int main()
{
    int t;
    scanf("%d",&t);
    char a[1000002];
    while(t--)
    {

        scanf("%s",a);
        start(a);
        printf("%s",a); 
        if(t) printf("\n");
    }
    return 0;
}

It seems that my code generates a segmentation fault in some way... Can you please tell me for what case the error occurs?

Viewing all articles
Browse latest Browse all 39796

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>