/* ideone barked at the definition of L, but this v "int" fixed it */
d
,M
,N
,A
[9999][2];char*(R
[9999][20]),b
[1000];L
(char**s
,int n
){char*j
[20],c
,a
=0;int x
[n
],y
=n
-1,z
,i
,t
,m
=0,w
=1;for(;y
;)x
[y
--]=999;for(;y
<N
;y
++){for(i
=0;i
<n
&&s
[i
]==R
[y
][i
];i
++);if(i
/n
){a
=A
[y
][0];m
=A
[y
][1];w
=0;if(m
+d
<M
||!a
)goto J
;else{c
=a
;goto K
;}}}for(c
=97;w
&&c
<'{';c
++){K
:t
=1,y
=1,z
=1;for(i
=0;i
<n
;j
[i
++]++){for(j
[i
]=s
[i
];*j
[i
]-c
;j
[i
]++)t
&=!!*j
[i
];y
&=j
[i
]-s
[i
]>x
[i
]?z
=0,1:0;}t
&=!y
;I
:if(t
){if(z
)for(i
=0;i
<n
;i
++)x
[i
]=j
[i
]-s
[i
];d
++,t
+=L
(j
,n
),d
--,m
=t
>m
?a
=c
,t
:m
;}}if(w
){for(y
=0;y
<n
;y
++)R
[N
][y
]=s
[y
];A
[N
][0]=a
;A
[N
++][1]=m
;}J
:if(d
+m
>=M
)M
=d
+m
,b
[d
]=a
;if(!d
)N
=0,M
=0,puts(b
);return m
;}
#include "stdio.h"
#include "time.h"
#define SIZE_ARRAY(x) (sizeof(x) / sizeof(*x))
int main(int argc, char** argv) {
/* Our test case */
char* test7[] = {
"nqrualgoedlf",
"jgqorzglfnpa",
"fgttvnogldfx",
"pgostsulyfug",
"sgnhoyjlnfvr",
"wdttgkolfkbt"
};
/* The call to L */
int size = L(test7, SIZE_ARRAY(test7));
double dt
= ((double)(clock() - start
)) / CLOCKS_PER_SEC
; printf("\tElapsed time: %lf s\n", dt
);
return 0;
}
LyogaWRlb25lIGJhcmtlZCBhdCB0aGUgZGVmaW5pdGlvbiBvZiBMLCBidXQgdGhpcyAgICAgIHYgImludCIgZml4ZWQgaXQgKi8KZCxNLE4sQVs5OTk5XVsyXTtjaGFyKihSWzk5OTldWzIwXSksYlsxMDAwXTtMKGNoYXIqKnMsaW50IG4pe2NoYXIqalsyMF0sYyxhPTA7aW50IHhbbl0seT1uLTEseixpLHQsbT0wLHc9MTtmb3IoO3k7KXhbeS0tXT05OTk7Zm9yKDt5PE47eSsrKXtmb3IoaT0wO2k8biYmc1tpXT09Ult5XVtpXTtpKyspO2lmKGkvbil7YT1BW3ldWzBdO209QVt5XVsxXTt3PTA7aWYobStkPE18fCFhKWdvdG8gSjtlbHNle2M9YTtnb3RvIEs7fX19Zm9yKGM9OTc7dyYmYzwneyc7YysrKXtLOnQ9MSx5PTEsej0xO2ZvcihpPTA7aTxuO2pbaSsrXSsrKXtmb3IoaltpXT1zW2ldOypqW2ldLWM7altpXSsrKXQmPSEhKmpbaV07eSY9altpXS1zW2ldPnhbaV0/ej0wLDE6MDt9dCY9IXk7STppZih0KXtpZih6KWZvcihpPTA7aTxuO2krKyl4W2ldPWpbaV0tc1tpXTtkKyssdCs9TChqLG4pLGQtLSxtPXQ+bT9hPWMsdDptO319aWYodyl7Zm9yKHk9MDt5PG47eSsrKVJbTl1beV09c1t5XTtBW05dWzBdPWE7QVtOKytdWzFdPW07fUo6aWYoZCttPj1NKU09ZCttLGJbZF09YTtpZighZClOPTAsTT0wLHB1dHMoYik7cmV0dXJuIG07fQoKI2luY2x1ZGUgInN0ZGlvLmgiCiNpbmNsdWRlICJ0aW1lLmgiCgojZGVmaW5lIFNJWkVfQVJSQVkoeCkgKHNpemVvZih4KSAvIHNpemVvZigqeCkpCgppbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKICAgIC8qIE91ciB0ZXN0IGNhc2UgKi8KICAgIGNoYXIqIHRlc3Q3W10gPSB7CiAgICAgICAgIm5xcnVhbGdvZWRsZiIsCiAgICAgICAgImpncW9yemdsZm5wYSIsCiAgICAgICAgImZndHR2bm9nbGRmeCIsCiAgICAgICAgInBnb3N0c3VseWZ1ZyIsCiAgICAgICAgInNnbmhveWpsbmZ2ciIsCiAgICAgICAgIndkdHRna29sZmtidCIKICAgIH07CgogICAgcHJpbnRmKCJUZXN0IDc6XG5cdCIpOwogICAgY2xvY2tfdCBzdGFydCA9IGNsb2NrKCk7CgogICAgLyogVGhlIGNhbGwgdG8gTCAqLwogICAgaW50IHNpemUgPSBMKHRlc3Q3LCBTSVpFX0FSUkFZKHRlc3Q3KSk7CgoKICAgIGRvdWJsZSBkdCA9ICgoZG91YmxlKShjbG9jaygpIC0gc3RhcnQpKSAvIENMT0NLU19QRVJfU0VDOwogICAgcHJpbnRmKCJcdFNpemU6ICVkXG4iLCBzaXplKTsKICAgIHByaW50ZigiXHRFbGFwc2VkIHRpbWU6ICVsZiBzXG4iLCBkdCk7CgogICAgcmV0dXJuIDA7Cn0=