#include<stdio.h>
#include<stdlib.h>
int mxlen;
int curlen=0;
typedef struct point
{
int x,y;
} XY;
XY* insertatp(XY arr[],int p,int q,int idx){
if(idx<0||idx>curlen)
{
printf("Err");
return arr;
}
if (curlen==mxlen){
mxlen= mxlen*2;
arr=(XY*)realloc(arr,sizeof(XY)*mxlen);
for(int i=curlen-1;i>=idx;i--)
{
arr[i+1].x= arr[i].x;
arr[i+1].y=arr[i].y;
}
arr[idx].x=p;
arr[idx].y=q;
curlen++;
printf("New mxlen %d changed CURlen %d",mxlen,curlen);
return arr;
}
else {
for(int i=curlen-1;i>=idx;i--)
{
arr[i+1].x= arr[i].x;
arr[i+1].y=arr[i].y;
}
arr[idx].x=p;
arr[idx].y=q;
curlen++;
printf("Unchanged mxlen %d changed CURlen %d",mxlen,curlen);
return arr;
}
}
void printarr(XY arr[]){
printf("Printing arr\n");
for(int i=0; i<curlen; i++)
{
printf("%d %d",arr[i].x,arr[i].y);
}
}
int main()
{
int u;
printf("Enter Size: ");
scanf("%d",&u);
mxlen=u;
XY* arr=(XY*)malloc(sizeof(XY)*mxlen);
printf("Insert arr\n");
for(int i=0; i<u; i++)
{
scanf("%d %d",&arr[i].x,&arr[i].y);
}
curlen=u;
int n=3;
while(n>0){
int p,q,idx;
printf("Enter Coor and idx \n");
scanf("%d %d %d",&p,&q,&idx);
arr=insertatp(arr,p,q,idx);
printarr(arr);
n--;
}
free(arr);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CmludCAgbXhsZW47CmludCBjdXJsZW49MDsKdHlwZWRlZiBzdHJ1Y3QgcG9pbnQKewogICAgaW50IHgseTsKCn0gWFk7CgpYWSogaW5zZXJ0YXRwKFhZIGFycltdLGludCBwLGludCBxLGludCBpZHgpewogICAgaWYoaWR4PDB8fGlkeD5jdXJsZW4pCiAgICAgICAgewogICAgICAgICBwcmludGYoIkVyciIpOwogICAgICAgICByZXR1cm4gYXJyOwogICAgICAgIH0KICAgIGlmIChjdXJsZW49PW14bGVuKXsKICAgICAgICBteGxlbj0gbXhsZW4qMjsKICAgICAgICBhcnI9KFhZKilyZWFsbG9jKGFycixzaXplb2YoWFkpKm14bGVuKTsKICAgIGZvcihpbnQgaT1jdXJsZW4tMTtpPj1pZHg7aS0tKQogICAgewogICAgICAgIGFycltpKzFdLng9IGFycltpXS54OwogICAgICAgIGFycltpKzFdLnk9YXJyW2ldLnk7CgogICAgfQogICAgICBhcnJbaWR4XS54PXA7CiAgICAgIGFycltpZHhdLnk9cTsKICAgICAgY3VybGVuKys7CiAgICAgIHByaW50ZigiTmV3IG14bGVuICAlZCBjaGFuZ2VkICBDVVJsZW4gICVkIixteGxlbixjdXJsZW4pOwogICAgICByZXR1cm4gICBhcnI7CiAgICB9CmVsc2UgewogICAgZm9yKGludCBpPWN1cmxlbi0xO2k+PWlkeDtpLS0pCiAgICB7CiAgICAgICAgYXJyW2krMV0ueD0gYXJyW2ldLng7CiAgICAgICAgYXJyW2krMV0ueT1hcnJbaV0ueTsKCiAgICB9CiAgICAgIGFycltpZHhdLng9cDsKICAgICAgYXJyW2lkeF0ueT1xOwogICAgICBjdXJsZW4rKzsKICAgICAgcHJpbnRmKCJVbmNoYW5nZWQgICBteGxlbiAgJWQgY2hhbmdlZCAgQ1VSbGVuICAlZCIsbXhsZW4sY3VybGVuKTsKICAgICAgcmV0dXJuICAgYXJyOwoKfQp9CgoKCgp2b2lkICBwcmludGFycihYWSBhcnJbXSl7CnByaW50ZigiUHJpbnRpbmcgIGFyclxuIik7CiAgZm9yKGludCBpPTA7IGk8Y3VybGVuOyBpKyspCiAgICB7CiAgICAgICAgcHJpbnRmKCIlZCAlZCIsYXJyW2ldLngsYXJyW2ldLnkpOwogICAgfQoKCn0KCgoKCgoKaW50IG1haW4oKQp7CiAgICBpbnQgdTsKICAgIHByaW50ZigiRW50ZXIgU2l6ZTogIik7CiAgICBzY2FuZigiJWQiLCZ1KTsKICAgIG14bGVuPXU7CgogICAgWFkqICBhcnI9KFhZKiltYWxsb2Moc2l6ZW9mKFhZKSpteGxlbik7CiAgICBwcmludGYoIkluc2VydCBhcnJcbiIpOwogICAgZm9yKGludCBpPTA7IGk8dTsgaSsrKQogICAgewogICAgICAgIHNjYW5mKCIlZCAlZCIsJmFycltpXS54LCZhcnJbaV0ueSk7CiAgICB9CiAgICBjdXJsZW49dTsKCgoKICAgIGludCAgbj0zOwogICAgd2hpbGUobj4wKXsKCiAgICAgICBpbnQgcCxxLGlkeDsKICAgICAgIHByaW50ZigiRW50ZXIgIENvb3IgIGFuZCBpZHggXG4iKTsKICAgICAgIHNjYW5mKCIlZCAlZCAlZCIsJnAsJnEsJmlkeCk7CiAgICAgICBhcnI9aW5zZXJ0YXRwKGFycixwLHEsaWR4KTsKICAgICAgIHByaW50YXJyKGFycik7CgpuLS07CgoKCgoKCgoKCiAgICB9CgoKCmZyZWUoYXJyKTsKCgogICAgcmV0dXJuIDA7Cn0K