#include <stdio.h>
#include <stdlib.h>
int getLength(char* str)
{
int i=0;
while(str[i++]!='\0');
return --i;
}
char* concat(char* a, char*b, int n1, int n2, int pos)
{
int n3=n1+n2, i=0, j=0, k=0;
char* c
= (char*)malloc((n3
+1)*sizeof(char)); while (i<pos) {
c[j++] = a[i++];
}
while (b[k] != '\0') {
c[j++] = b[k++];
}
while (a[i] != '\0') {
c[j++] = a[i++];
}
c[j] = '\0';
return c;
}
void substring(char* str, int pos, int len)
{
pos--;
int i;
for(i=0; i<len; i++)
return;
}
int main(void) {
int t;
char ch; int pos; char newstr[3*100000 +1];
char* str
= (char*)malloc(sizeof(char)); int n1=0, n2, len;
str[0]='\0';
while(t--)
{
if(ch=='?')
{
scanf("%d %d ", &pos
, &len
); substring(str, pos, len);
}
else
{
scanf("%d %s ",&pos
, newstr
); n2 = getLength(newstr);
char* str_latest = concat(str, newstr, n1, n1, pos);
str=str_latest;
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBnZXRMZW5ndGgoY2hhciogc3RyKQp7CglpbnQgaT0wOwoJd2hpbGUoc3RyW2krK10hPSdcMCcpOwoJcmV0dXJuIC0taTsKfQoKY2hhciogY29uY2F0KGNoYXIqIGEsIGNoYXIqYiwgaW50IG4xLCBpbnQgbjIsIGludCBwb3MpCnsKCWludCBuMz1uMStuMiwgaT0wLCBqPTAsIGs9MDsKCWNoYXIqIGMgPSAoY2hhciopbWFsbG9jKChuMysxKSpzaXplb2YoY2hhcikpOwoJd2hpbGUgKGk8cG9zKSB7IAogICAgICAgIGNbaisrXSA9IGFbaSsrXTsKICAgIH0KICAgIHdoaWxlIChiW2tdICE9ICdcMCcpIHsgCiAgICAgICAgY1tqKytdID0gYltrKytdOwogICAgfQogICAgd2hpbGUgKGFbaV0gIT0gJ1wwJykgeyAKICAgICAgICBjW2orK10gPSBhW2krK107CiAgICB9CiAgICBjW2pdID0gJ1wwJzsKICAgIHJldHVybiBjOwp9Cgp2b2lkIHN1YnN0cmluZyhjaGFyKiBzdHIsIGludCBwb3MsIGludCBsZW4pCnsKCXBvcy0tOwoJaW50IGk7Cglmb3IoaT0wOyBpPGxlbjsgaSsrKQoJcHJpbnRmKCIlYyIsIHN0cltpXSk7CglwcmludGYoIlxuIik7CglyZXR1cm47Cn0KCmludCBtYWluKHZvaWQpIHsKCWludCB0OwoJY2hhciBjaDsgaW50IHBvczsgY2hhciBuZXdzdHJbMyoxMDAwMDAgKzFdOwoJY2hhciogc3RyID0gKGNoYXIqKW1hbGxvYyhzaXplb2YoY2hhcikpOwoJaW50IG4xPTAsIG4yLCBsZW47CglzdHJbMF09J1wwJzsKCXNjYW5mKCIlZCAiLCAmdCk7Cgl3aGlsZSh0LS0pCgl7CgkJc2NhbmYoIiVjICIsICZjaCk7CgkJaWYoY2g9PSc/JykKCQl7CgkJCXNjYW5mKCIlZCAlZCAiLCAmcG9zLCAmbGVuKTsKCQkJc3Vic3RyaW5nKHN0ciwgcG9zLCBsZW4pOwoJCX0KCQllbHNlCgkJewoJCQlzY2FuZigiJWQgJXMgIiwmcG9zLCBuZXdzdHIpOwoJCQluMiA9IGdldExlbmd0aChuZXdzdHIpOwoJCQljaGFyKiBzdHJfbGF0ZXN0ID0gY29uY2F0KHN0ciwgbmV3c3RyLCBuMSwgbjEsIHBvcyk7CgkJCWZyZWUoc3RyKTsKCQkJc3RyPXN0cl9sYXRlc3Q7CgkJfQoJfQoJcmV0dXJuIDA7Cn0K