#include <stdio.h>
#include <string.h>
#include <ctype.h>
int has26(const char *p) {
int c, count[26] = {0};
for (c = 'a'; c <= 'z'; c++) if (count[c - 'a'] < 1) return 0;
return 1;
}
const char *f(const char **lines, int n) {
const char *found = 0;
int i, len, minlen;
for (i = 0; i < n; i++)
if (has26(lines[i]))
if (!found)
found
= lines
[i
], minlen
= strlen(lines
[i
]); else if ((len
= strlen(lines
[i
])) < minlen
) found = lines[i], minlen = len;
return found;
}
int main() {
const char *lines[] = {
"The quick brown fox jumps over a lazy dog."
, "The jay, pig, fox, zebra and my wolves quack!"
, "Pack my box with seven dozen liquor jugs."
, "The horse, pig, fox, zebra and my wolves quack!"
, "Jackdaws love my small sphinx of quartz."
, "Jackdaws love my big sphinx of quartz."
, "The quick brown fox jumps over a lazy cat."
, "Pack my box with five dozen liquor jugs."
};
puts(f
(lines
, sizeof lines
/ sizeof *lines
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+CmludCBoYXMyNihjb25zdCBjaGFyICpwKSB7CiAgaW50IGMsIGNvdW50WzI2XSA9IHswfTsKICBmb3IgKDsgYyA9IHRvbG93ZXIoKnApOyBwKyspIGlmIChpc2FscGhhKGMpKSBjb3VudFtjIC0gJ2EnXSsrOwogIGZvciAoYyA9ICdhJzsgYyA8PSAneic7IGMrKykgaWYgKGNvdW50W2MgLSAnYSddIDwgMSkgcmV0dXJuIDA7CiAgcmV0dXJuIDE7Cn0KY29uc3QgY2hhciAqZihjb25zdCBjaGFyICoqbGluZXMsIGludCBuKSB7CiAgY29uc3QgY2hhciAqZm91bmQgPSAwOwogIGludCBpLCBsZW4sIG1pbmxlbjsKICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgaWYgKGhhczI2KGxpbmVzW2ldKSkKICAgICAgaWYgKCFmb3VuZCkKICAgICAgICBmb3VuZCA9IGxpbmVzW2ldLCBtaW5sZW4gPSBzdHJsZW4obGluZXNbaV0pOwogICAgICBlbHNlIGlmICgobGVuID0gc3RybGVuKGxpbmVzW2ldKSkgPCBtaW5sZW4pCiAgICAgICAgZm91bmQgPSBsaW5lc1tpXSwgbWlubGVuID0gbGVuOwogIHJldHVybiBmb3VuZDsKfQppbnQgbWFpbigpIHsKICBjb25zdCBjaGFyICpsaW5lc1tdID0gewogICAgIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciBhIGxhenkgZG9nLiIKICAgICwgIlRoZSBqYXksIHBpZywgZm94LCB6ZWJyYSBhbmQgbXkgd29sdmVzIHF1YWNrISIKICAgICwgIlBhY2sgbXkgYm94IHdpdGggc2V2ZW4gZG96ZW4gbGlxdW9yIGp1Z3MuIgogICAgLCAiVGhlIGhvcnNlLCBwaWcsIGZveCwgemVicmEgYW5kIG15IHdvbHZlcyBxdWFjayEiCiAgICAsICJKYWNrZGF3cyBsb3ZlIG15IHNtYWxsIHNwaGlueCBvZiBxdWFydHouIgogICAgLCAiSmFja2Rhd3MgbG92ZSBteSBiaWcgc3BoaW54IG9mIHF1YXJ0ei4iCiAgICAsICJUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgYSBsYXp5IGNhdC4iCiAgICAsICJQYWNrIG15IGJveCB3aXRoIGZpdmUgZG96ZW4gbGlxdW9yIGp1Z3MuIgogIH07CiAgcHV0cyhmKGxpbmVzLCBzaXplb2YgbGluZXMgLyBzaXplb2YgKmxpbmVzKSk7CiAgcmV0dXJuIDA7Cn0K