I am a beginner and I want to optimize my code to the problem given in title
Link to the problem is : http://www.codechef.com/problems/BYTEISLE
My code is the following in c++ :
#include
using namespace std;
int main()
{
int total,no_knights,a[50001]={0},b[50001]={0},no_byte,Case=0,slash = 0;
int ansi;
char c=‘1’,ansc[50001],temp[50001];
scanf("%d",&total);
while(Case<total)
{ //int swap = 0;
scanf("%d",&no_byte);
//if(Case==0)
for(int i=0;i<no_byte;i++)
{ slash=0;
if(i==0)
getchar_unlocked();
c=‘a’;
while(c!=’\n’)
{
c=getchar_unlocked();
if(c!=' ' && slash==0)
{
a[i]=a[i]*10+(c-48);
}
else if(slash == 1 && c!=' ' && c!='\n')
{
b[i]=b[i]*10+(c-48);
}
if(c==' ')slash++;
}//while loop
}
ansi=0;
for(int no_knights=0;no_knights<=no_byte;no_knights++)
{ int count = 0,swap=0;
for(int i=0;i<no_byte;i++)
{
if(a[i]<=no_knights && b[i]>=no_knights)
{
count++;
if(ansi==0)
ansc[i]='1';
else temp[i]='1';
}
else
{
if(ansi==0)ansc[i]='0';
else temp[i]='0';
}
if(ansc[i]>temp[i] && ansi>0)swap++;
if(count>no_knights){i=no_byte;break;}
}//for loop
if(count== no_knights)
{
ansi++;
if(swap == 1)
{
int k=0;
do
{
ansc[k]=temp[k];k++;
}while(k<no_byte);
}
}
}//no knights
printf("%d\n%s",ansi,ansc);
Case++;
}
return 0;
}