Untitled
unknown
c_cpp
3 years ago
2.0 kB
11
Indexable
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void add(char**, int, char*);
void del(char**, int, int);
void swap(char**, int, int);
void longest(char**, int);
void all(char**, int);
int main(){
int n, m;
scanf("%d %d ", &n, &m);
char** st = (char**)malloc(sizeof(char*) * 100 + sizeof(char) * 100 * 100005);
char* ptr = (char*)(st + 100);
for(int i=0; i<100; i++){
st[i] = ptr + i*1005;
}
for(int i=0; i<m; i++){
char op[10], s[105];
int x, y, k;
scanf("%s", op);
switch(op[1]){
case 'd': // add
scanf("%d %s", &x, s);
add(st, x-1, s);
// printf("st: %d %s\n", x, s);
break;
case 'e': // delete
scanf("%d %d", &x, &k);
del(st, x-1, k);
// printf("del st: %d %d\n", x, k);
break;
case 'w': // swap
scanf("%d %d\n", &x, &y);
swap(st, x-1, y-1);
// printf("swap st: %d %d\n", x, y);
break;
case 'o': // longest
longest(st, n);
break;
case 'l': // all
all(st, n);
break;
}
}
return 0;
}
void add(char** st, int n, char* s){
strcat(st[n], s);
}
void del(char** st, int n, int k){
int len = strlen(st[n]);
for(int i=len-1; i>=len-k; i--)
st[n][i] = 0;
}
void swap(char** st, int a, int b){
char* tmp = st[a];
st[a] = st[b];
st[b] = tmp;
}
void longest(char** st, int n){
int max = 0, maxi = 0;
for(int i=0; i<n; i++){
if(max < strlen(st[i])) max = strlen(st[i]), maxi = i;
}
printf("%d %s\n", strlen(st[maxi]), st[maxi]);
}
void all(char** st, int n){
for(int i=0; i<n; i++){
puts(st[i]);
}
}Editor is loading...