bugs.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char bug[2000];
char line[3000000];
char lineo[3000000];
int lineop;
int stack[3000000];
int stackp;
void push(int val)
{
stack[stackp++] = val;
}
int pop()
{
return stack[--stackp];
}
int top()
{
return stack[stackp-1];
}
int main(int argc, char **argv)
{
int lines, linel, i, bugl, f;
while (1) {
break;
while (lines--) {
stackp=0;
lineop = 0;
for (i=0; i<linel; i++) {
lineo[lineop++] = line[i];
f = 0;
if (stackp && bug[top()] == line[i]) {
push(pop()+1);
if (top() == bugl) {
lineop -= bugl;
pop();
}
f = 1;
}
if (bug[0] == line[i]) {
push(1);
f = 1;
}
if (!f) stackp = 0;
}
lineo[lineop] = 0;
}
}
return 0;
}