This code is a solution to the given problem : https://www.hackerearth.com/international-women-hackathon-2016/algorithm/jp-and-rotations/
Issue is after I give m operations as R 1 ,L 2 ,L 1 one below other as specified in the sample input , it doesn't take any further input and directly prints output as 2 , I am unable to get the mistake I am making here ,please help me out .
#include <stdio.h>
#include<malloc.h>
struct node
{
unsigned long int data ;
struct node *next,*prev;
};
int main()
{
int n ,m,a,count=0,i,j;
char rot;
scanf("%d %d ", &n ,&m);
struct node *head1=NULL,*rear1,*ptr,*temp,*head2=NULL,*rear2;
if(head1==NULL)
{
temp=(struct node*)malloc(sizeof(struct node));
scanf("%ld ",&temp->data);
temp->next=NULL;
head1=temp;
ptr=head1;
head1->prev=NULL;
}
for(i=1;i<=n-1;i++)
{
temp=(struct node*)malloc(sizeof(struct node));
scanf("%ld ",&temp->data);
ptr->next=temp;
temp->prev=ptr;
ptr=temp;
temp->next=NULL;
}
rear1=ptr;
temp=NULL;
ptr=NULL;
fflush(stdout);
if(head2==NULL)
{
temp=(struct node*)malloc(sizeof(struct node));
scanf("%ld ",&temp->data);
temp->next=NULL;
head2=temp;
ptr=head2;
}
for(i=1;i<=n-1;i++)
{
temp=(struct node*)malloc(sizeof(struct node));
scanf("%ld ",&temp->data);
ptr->next=temp;
ptr=temp;
ptr->next=NULL;
}
rear2=ptr;
ptr=NULL;temp=NULL;
fflush(stdout);
for(i=0;i<m;i++)
{
scanf("%c %d",&rot,&a);
fflush(stdout);
if(rot=='L')
{
ptr=head1;
for(j=0;j<a;j++)
{
temp=ptr->next;
rear1->next=ptr;
ptr->prev=rear1;
rear1=ptr;
head1=temp;
ptr=head1;
}
count++;
ptr=NULL;
temp=NULL;
if(head1->data==head2->data && rear1->data==rear2->data)
{
break;
}
}
else if(rot=='R')
{
temp=head1;
ptr=rear1->prev;
for(j=0;j<a;j++)
{
temp->prev=rear1;
rear1->prev->next=NULL;
rear1->next=temp;
head1=rear1;
temp=head1;
rear1=ptr;
ptr=rear1->prev;
}
count++;
temp=NULL;
ptr=NULL;
if(head1->data==head2->data && rear1->data==rear2->data)
{
break;
}
}
}
printf("%d",count);
return 0;
}