02/07/28 17:07
>>580
縮めてみますた。アルゴリズムが間違っていたらすまソ
#include <stdio.h>
int(*p)()=putchar,(*q)()=getchar,f=1023,g,j,k,l,m,n=127,s;char*d=0;main(int i){
if(i>1){l=getw(stdin);for(d=malloc(l+8);s<l;){g=q();if(g<n)for(i=g;i--;)d[s++]=
q();else for(k=q()+(g-128)*256,i=k>>10,j=s-(k&f);i--;)d[s++]=d[j++];}for(;l--;)
p(*d++);}else{for(;~(s=q());d[l++]=s)d=realloc(d,l+9);putw(l,stdout);memset(d+l
,0,8);for(l+=8;s<l-3;s++){for(m=j=l-s-2>31?31:l-s;m&&j>2;j--)for(i=s<f?0:s-f;m
&&i<s;)m=memcmp(d+i++,d+s,j);if(!m){for(k=s-g;k+1;)for(p(m=k>n?n:k);k--,m--;)p(
d[g++]);p(++j*4+128+(k=s-i+1)/256);p(k);g+=j;s=g-1;}}}}