Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
2.1 kB
0
Indexable
Never
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int len[105];
char op[15];
char *str[105];

void Add(int x,char *s);
void Delete(int x,int k);
void Swap(int x,int y);
void Longest(int N);
void All(int N);

int main(void){
    int x,y,k,m,n;
    char s[105];

    for(int i=0;i<105;i++){
        len[i]=0;
        str[i]=(char*)malloc(sizeof(char)*(1));
        str[i][0]='\0';
    }
    scanf("%d %d",&n,&m);
    for(int i=0;i<m;i++){
        scanf("%s",op);
        if(strcmp(op,"add")==0){
            scanf("%d %s",&x,s);
            Add(x,s);
        }
        if(strcmp(op,"delete")==0){
            scanf("%d %d",&x,&k);
            Delete(x,k);
        }
        if(strcmp(op,"swap")==0){
            scanf("%d %d",&x,&y);
            Swap(x,y);
        }
        if(strcmp(op,"longest")==0){
            Longest(n);
        }
        if(strcmp(op,"all")==0){
            All(n);
        }
    }
    return 0;
}

void Add(int x,char *s){
    char *tmp=(char*)malloc(sizeof(char)*(len[x]+1));
    strcpy(tmp,str[x]);
    len[x]+=strlen(s);
    free(str[x]);
    str[x]=(char*)malloc(sizeof(char)*(len[x]+1));
    strcpy(str[x],tmp);
    strcat(str[x],s);
    free(tmp);
}
void Delete(int x,int k){
    if(k>len[x]){
        len[x]=0;
        free(str[x]);
        str[x]=(char*)malloc(sizeof(char)*(1));
        str[x][0]='\0';
    }
    else{
        len[x]-=k;
        char *tmp=(char*)malloc(sizeof(char)*(len[x]+1));
        strncpy(tmp,str[x],len[x]);
        tmp[len[x]]='\0';
        free(str[x]);
        str[x]=tmp;
    }
}
void Swap(int x,int y){
    char *ss;
    ss=str[x];
    str[x]=str[y];
    str[y]=ss;
    int cc;
    cc=len[x];
    len[x]==len[y];
    len[y]=cc;
}
void Longest(int N){
    int max=len[1],oo=1;
    for(int i=1;i<=N;i++){
        if(len[i]>max){
            max=len[i];
            oo=i;
        }
    }
    printf("%d %s\n",max,str[oo]);
}
void All(int N){
    for(int i=1;i<=N;i++){
        printf("%s\n",str[i]);
    }
}