QUESTION
Monk loves to preform different operations on arrays, and so being the principal of Hackerearth School, he assigned a task to his new student Mishki. Mishki will be provided with an integer array A of size \nN and an integer K , where she needs to rotate the array in the right direction by K steps and then print the resultant array. As she is new to the school, please help her to complete the task.\n\nInput:\nThe first line will consists of one integer T denoting the number of test cases. \nFor each test case:\n1) The first line consists of two integers N and K, N being the number of elements in the array and K denotes the number of steps of rotation.\n2) The next line consists of \nN space separated integers , denoting the elements of the array A.\nOutput:\nPrint the required array.\n\nConstraints:\n1N10^5\n0K10^6\n0A[i]10^6.
“TESTCASE_1”: “1\n5 2\n1 2 3 4 5\n###—###SEPERATOR—###—\n4 5 1 2 3”, “TESTCASE_2”: “1\n5 3\n1 2 3 4 5\n###—###SEPERATOR—###—\n3 4 5 1 2”, “TESTCASE_3”: “2\n7 2\n11 39 43 49 51 60 33\n3 2\n1 101 201\n###—###SEPERATOR—###—\n60 33 11 39 43 49 51 \n101 201 1”, “TESTCASE_4”: “1\n7 0\n11 39 43 49 51 60 33\n###—###SEPERATOR—###—\n11 39 43 49 51 60 33”, “TESTCASE_5”: “0\n###—###SEPERATOR—###—\n0
ANSWER
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<string.h>
typedef struct {
int K ;
int N ;
int* A ;
} StrArr ;
void rotandprint(StrArr strA)
{
int i,j,l1 ;
if(strA.N > strA.K)
{
j=strA.N-strA.K ;
}
else
{
l1 = (strA.K % strA.N) ;
j=strA.N-l1 ;
}
for(i=j;i<strA.N;i++)
{
printf("%d ",strA.A[i]) ;
}
for(i=0;i<j;i++)
{
printf("%d ",strA.A[i]) ;
}
putchar('\n') ;
}
int main(int argc, char** argv)
{
int T,i,j,isz, csz ;
char tmp[15], c='Z', *l ;
StrArr strA ;
isz=sizeof(int) ;
csz = sizeof(char) ;
scanf("%d",&T) ;
for(i=0;i<T;i++)
{
scanf("%d %d",&(strA.N),&(strA.K)) ;
strA.A = malloc(isz*(strA.N)) ;
l=tmp ;
memset(tmp,0,15) ;
for(j=0 ; j < strA.N ; )
{
c = getchar() ;
if(c!=' ' && c!='\n' && c>-1)
{
*l=c ;
l+=csz ;
}
else
{
if(l==tmp) continue ;
*((strA.A)+j) = atoi(tmp) ;
memset(tmp,0,15) ;
l=tmp ;
j++ ;
}
}
rotandprint(strA) ;
free(strA.A) ;
}
return 0 ;
}