//
// palin5.c
// Spoj.pl
//
// Created by Subodh Kamble on 17/04/13.
// Copyright (c) 2013 Subodh Kamble. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void copyRemainingElements(char *,char * , int , int);
int compareElements(char *,char *, int , int);
void merge(char *, char *);
int main()
{
int t ;
char *input , *output , *first , *second;
int i , startCopyingLocation , l ;
while (t--)
{
input
= (char *)malloc(1000000);
i = 0 ;
for(i = 0 ; i< l ; i++)
{
if(input[i]!='9')
break;
}
if(i==l)
{
output[0]='1';
output[l]='1';
for(i=1;i<l;i++)
output[i]='0';
output[l+1]='\0';
break;
}
if (l%2==0)
{
//even
for(i=0;i<l/2;i++)
first[i] = input[l/2-1-i];
first[i]='\0';
for(i=l/2;i<l;i++)
second[i-l/2]=input[i];
i = 0 ;
startCopyingLocation = compareElements(first,second,i,i);
copyRemainingElements(first,second,startCopyingLocation,startCopyingLocation);
merge(first,second);
}
else
{
}
}
return 0 ;
}
void copyRemainingElements(char *first,char *second , int startCopyingLocation1, int startCopyingLocation2)
{
if(startCopyingLocation1 == -1)
startCopyingLocation1 = 0 ;
while(first[startCopyingLocation1] !='\0')
{
second[startCopyingLocation1] = first[startCopyingLocation1] ;
startCopyingLocation1++;
}
}
int compareElements(char *first,char *second,int iterateFirst, int iterateSecond )
{
int startCopyingLocation = 0 ;
int noOfNine = 0 ;
int containsNine = 0 ;
if(first[0]=='9')
containsNine = 1 ;
while(first[iterateFirst]!='\0')
{
if(first[iterateFirst]==second[iterateSecond])
{
if(containsNine==1 && first[iterateFirst]=='9')
noOfNine = noOfNine + 1 ;
else
containsNine = 0 ;
iterateFirst++;
}
else if(first[iterateFirst] < second[iterateSecond])
{
//handle the case of 9
if(noOfNine != 0)
{
for(containsNine = 0;containsNine<noOfNine;containsNine++)
{
first[containsNine] = '0' ;
}
}
first[iterateFirst]=first[iterateFirst]+1;
second[iterateSecond]=first[iterateFirst];
startCopyingLocation = iterateFirst+1 ;
if(startCopyingLocation
== strlen(first
)) return -1 ;
else
return startCopyingLocation ;
}
else if(first[iterateFirst] > second[iterateSecond])
{
startCopyingLocation = iterateFirst ;
return startCopyingLocation ;
}
}
}
void merge(char *first,char *second)
{
unsigned long long int i = 0 ;
while(first[i]!='\0')
{
output
[i
]=first
[strlen(first
)-1-i
]; i++;
}
output[i]='\0';
}
Ci8vCi8vICBwYWxpbjUuYwovLyAgU3Bvai5wbAovLwovLyAgQ3JlYXRlZCBieSBTdWJvZGggS2FtYmxlIG9uIDE3LzA0LzEzLgovLyAgQ29weXJpZ2h0IChjKSAyMDEzIFN1Ym9kaCBLYW1ibGUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8vCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+Cgp2b2lkIGNvcHlSZW1haW5pbmdFbGVtZW50cyhjaGFyICosY2hhciAqICwgaW50ICwgaW50KTsKaW50IGNvbXBhcmVFbGVtZW50cyhjaGFyICosY2hhciAqLCBpbnQgLCBpbnQpOwp2b2lkIG1lcmdlKGNoYXIgKiwgY2hhciAqKTsKCmludCBtYWluKCkKewogICAgaW50ICB0IDsKICAgIGNoYXIgKmlucHV0ICwgKm91dHB1dCAsICpmaXJzdCAsICpzZWNvbmQ7CiAgICBpbnQgaSAsIHN0YXJ0Q29weWluZ0xvY2F0aW9uICwgbCA7CiAgICBzY2FuZigiJWQiLCZ0KTsKCiAgICB3aGlsZSAodC0tKQogICAgewogICAgICAgIGlucHV0ID0gKGNoYXIgKiltYWxsb2MoMTAwMDAwMCk7CiAgICAgICAgc2NhbmYoIiVzIixpbnB1dCk7CiAgICAgICAgbCA9IHN0cmxlbihpbnB1dCk7CgogICAgICAgIGkgPSAwIDsKICAgICAgICBmb3IoaSA9IDAgOyBpPCBsIDsgaSsrKQogICAgICAgIHsKICAgICAgIAkgICAgIGlmKGlucHV0W2ldIT0nOScpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmKGk9PWwpCiAgICAgICAgewogICAgICAgICAgICBvdXRwdXQgPSBtYWxsb2MobCsyKTsKICAgICAgICAgICAgb3V0cHV0WzBdPScxJzsKICAgICAgICAgICAgb3V0cHV0W2xdPScxJzsKICAgICAgICAgICAgZm9yKGk9MTtpPGw7aSsrKQogICAgICAgICAgICAgICAgb3V0cHV0W2ldPScwJzsKICAgICAgICAgICAgb3V0cHV0W2wrMV09J1wwJzsKICAgICAgICAgICAgcHJpbnRmKCIlc1xuIixvdXRwdXQpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmIChsJTI9PTApCiAgICAgICAgewogICAgICAgICAgICAgLy9ldmVuCiAgICAgICAgICAgICBmaXJzdCA9IG1hbGxvYyhsLzIrMSk7CiAgICAgICAgICAgICBzZWNvbmQgPSBtYWxsb2MobC8yKzEpOwogICAgICAgICAgICAgCgkgICAgIGZvcihpPTA7aTxsLzI7aSsrKQogICAgICAgICAgICAgICAgIGZpcnN0W2ldID0gaW5wdXRbbC8yLTEtaV07CiAgICAgICAgICAgICBmaXJzdFtpXT0nXDAnOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IoaT1sLzI7aTxsO2krKykKICAgICAgICAgICAgICAgICBzZWNvbmRbaS1sLzJdPWlucHV0W2ldOwoKICAgICAgICAgICAgIGkgPSAwIDsKICAgICAgICAgICAgIHN0YXJ0Q29weWluZ0xvY2F0aW9uID0gY29tcGFyZUVsZW1lbnRzKGZpcnN0LHNlY29uZCxpLGkpOwogICAgICAgICAgICAgY29weVJlbWFpbmluZ0VsZW1lbnRzKGZpcnN0LHNlY29uZCxzdGFydENvcHlpbmdMb2NhdGlvbixzdGFydENvcHlpbmdMb2NhdGlvbik7CiAgICAgICAgICAgICBtZXJnZShmaXJzdCxzZWNvbmQpOwoKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKCiAgICAgICAgIH0KICAgICAgICB9CgogICAgZnJlZShpbnB1dCk7CiAgICBmcmVlKG91dHB1dCk7CgogICAgcmV0dXJuIDAgOwp9CnZvaWQgY29weVJlbWFpbmluZ0VsZW1lbnRzKGNoYXIgKmZpcnN0LGNoYXIgKnNlY29uZCAsIGludCBzdGFydENvcHlpbmdMb2NhdGlvbjEsICBpbnQgc3RhcnRDb3B5aW5nTG9jYXRpb24yKQp7CiAgICBpZihzdGFydENvcHlpbmdMb2NhdGlvbjEgPT0gLTEpCiAgICAgICAgc3RhcnRDb3B5aW5nTG9jYXRpb24xID0gMCA7CiAgICB3aGlsZShmaXJzdFtzdGFydENvcHlpbmdMb2NhdGlvbjFdICE9J1wwJykKICAgIHsKICAgICAgICAgICAgc2Vjb25kW3N0YXJ0Q29weWluZ0xvY2F0aW9uMV0gPSBmaXJzdFtzdGFydENvcHlpbmdMb2NhdGlvbjFdIDsKICAgICAgICAgICAgc3RhcnRDb3B5aW5nTG9jYXRpb24xKys7CiAgICB9Cgp9CmludCBjb21wYXJlRWxlbWVudHMoY2hhciAqZmlyc3QsY2hhciAqc2Vjb25kLGludCBpdGVyYXRlRmlyc3QsIGludCBpdGVyYXRlU2Vjb25kICkKewogICAgaW50IHN0YXJ0Q29weWluZ0xvY2F0aW9uID0gMCA7CiAgICBpbnQgbm9PZk5pbmUgPSAwIDsKICAgIGludCBjb250YWluc05pbmUgPSAwIDsKCiAgICBpZihmaXJzdFswXT09JzknKQogICAgICAgIGNvbnRhaW5zTmluZSA9IDEgOwogICAgd2hpbGUoZmlyc3RbaXRlcmF0ZUZpcnN0XSE9J1wwJykKICAgIHsKICAgICAgICAgICAgaWYoZmlyc3RbaXRlcmF0ZUZpcnN0XT09c2Vjb25kW2l0ZXJhdGVTZWNvbmRdKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihjb250YWluc05pbmU9PTEgJiYgZmlyc3RbaXRlcmF0ZUZpcnN0XT09JzknKQogICAgICAgICAgICAgICAgICAgIG5vT2ZOaW5lID0gbm9PZk5pbmUgKyAxIDsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBjb250YWluc05pbmUgPSAwIDsKICAgICAgICAgICAgICAgIGl0ZXJhdGVGaXJzdCsrOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKGZpcnN0W2l0ZXJhdGVGaXJzdF0gPCBzZWNvbmRbaXRlcmF0ZVNlY29uZF0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vaGFuZGxlIHRoZSBjYXNlIG9mIDkKCiAgICAgICAgICAgICAgICBpZihub09mTmluZSAhPSAwKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGZvcihjb250YWluc05pbmUgPSAwO2NvbnRhaW5zTmluZTxub09mTmluZTtjb250YWluc05pbmUrKykKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0W2NvbnRhaW5zTmluZV0gPSAnMCcgOwogICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZpcnN0W2l0ZXJhdGVGaXJzdF09Zmlyc3RbaXRlcmF0ZUZpcnN0XSsxOwogICAgICAgICAgICAgICAgc2Vjb25kW2l0ZXJhdGVTZWNvbmRdPWZpcnN0W2l0ZXJhdGVGaXJzdF07CgogICAgICAgICAgICAgICAgc3RhcnRDb3B5aW5nTG9jYXRpb24gPSBpdGVyYXRlRmlyc3QrMSA7CiAgICAgICAgICAgICAgICBpZihzdGFydENvcHlpbmdMb2NhdGlvbiA9PSBzdHJsZW4oZmlyc3QpKQogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSA7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0Q29weWluZ0xvY2F0aW9uIDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKGZpcnN0W2l0ZXJhdGVGaXJzdF0gPiBzZWNvbmRbaXRlcmF0ZVNlY29uZF0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHN0YXJ0Q29weWluZ0xvY2F0aW9uID0gaXRlcmF0ZUZpcnN0IDsKICAgICAgICAgICAgICAgIHJldHVybiBzdGFydENvcHlpbmdMb2NhdGlvbiA7CiAgICAgICAgICAgIH0KICAgIH0KCn0KCnZvaWQgbWVyZ2UoY2hhciAqZmlyc3QsY2hhciAqc2Vjb25kKQp7CiAgICBjaGFyICpvdXRwdXQgPSBtYWxsb2Moc3RybGVuKGZpcnN0KStzdHJsZW4oc2Vjb25kKSk7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGkgPSAwIDsKICAgIHdoaWxlKGZpcnN0W2ldIT0nXDAnKQogICAgewogICAgICAgIG91dHB1dFtpXT1maXJzdFtzdHJsZW4oZmlyc3QpLTEtaV07CiAgICAgICAgaSsrOwogICAgfQogICAgb3V0cHV0W2ldPSdcMCc7CiAgICBzdHJjYXQob3V0cHV0LHNlY29uZCk7CiAgICBwcmludGYoIiVzXG4iLG91dHB1dCk7Cn0KCg==