/* VNIMANIYE! Etot fail rashiryet prototipy. Zapreshaetsa ispolzovat sovmestno s drugimi failami. */ process.stdin.resume(); process.stdin.setEncoding('utf8'); Array.prototype.$ = function (f) { return f(this) } Array.prototype.sort1 = function (f) { this.sort(f); return this } function etoKusochekBaytika(kus) { return kus.length !== 0 && kus.replace(/0|1/g, '').length == 0 } function monetki (n, nominals) { function monetki_recur(n, nominals) { return nominals.map(function (nom) { if (nom < n) { return monetki(n - nom, nominals).map(function (tail) { return [nom].concat(tail); }) } else if (nom == n) { return [[nom]] } else { return []; } }).reduce(function (r, a) { return r.concat(a) }, []) } function mprocess(monetki) { var dict = {}, res = [], i monetki.forEach(function (m) { m.sort(function (x,y) { return y-x}) dict[m] = m }) for(i in dict) { res.push(dict[i]) } res.sort(function (x,y) { return y.length - x.length}) return res } return mprocess(monetki_recur(n, nominals)) } function sdelatBaytiki(kusochki) { var baitiki = [] , kluchiki = function (slovar) { var kl=[], i; for (i in slovar) { kl.push(i) }; return kl; } , stopochki = kusochki.reduce(function (stopki, kus) { stopki[kus.length] = (stopki[kus.length] || []).concat([kus]) return stopki }, {}) , ostalos = function (stopki) { return kluchiki(stopki).reduce(function (x,y) { return x+stopki[y].length }, 0) } , try_match = function (stopki, schemka) { var rollback = function (baitik) { baitik.forEach(function (kus) { stopki[kus.length].push(kus) }) } return schemka.reduce(function (baitik, ks) { if (baitik === null) return null if (stopki[ks] && stopki[ks].length > 0) { return [stopki[ks].pop()].concat(baitik) } else { rollback(baitik); return null; } }, []) } , schemki = monetki(8, kluchiki(stopochki).map(Number)) , schemka = schemki.pop() , baitik = null; while (schemka && ostalos(stopochki) > 0) { while(schemka && !(baitik = try_match(stopochki, schemka))) { schemka = schemki.pop() } if (baitik !== null) baitiki.push(baitik) } // PROVERKA if (ostalos(stopochki) == 0) { console.log('VSE HOROSHO') } else { console.log('VNIMANIYE, OSHIBKA') console.log(stopochki) console.log(monetki(8, kluchiki(stopochki).map(Number))) } return baitiki } function pechatatBaytik(bayt) { process.stdout.write(bayt.join(' + ') + '\n') } function mult50(arr) { var res = [] for (var i = 0; i < 25; ++i) res = res.concat(arr); return res; } function count01(arr) { var zs = 0, os = 0; for (var i = 0; i < arr.length; ++i) { var s = arr[i]; for (var j = 0; j < s.length; ++j) { if (s[j] == '0') ++zs; else ++os; } } return [zs, os]; } function print01(arr) { var res = count01(arr); console.log('0s: ' + res[0] + ' 1s: ' + res[1]); return arr; } function print01arr(arr) { var res = [0, 0]; for (var i = 0; i < arr.length; ++i) { var tmp = count01(arr[i]); res[0] += tmp[0]; res[1] += tmp[1]; } console.log('0s: ' + res[0] + ' 1s: ' + res[1]); return arr; } function sobratBaytiki(zemlya) { zemlya .split(/\s+/) .filter(etoKusochekBaytika) .$(mult50) .$(print01) .sort1(function (x, y) { return y.length - x.length }) .$(sdelatBaytiki) //.forEach(pechatatBaytik) .$(print01arr) } var buffer = "" process.stdin.on('data', function (chunk) { return buffer+=chunk}) process.stdin.on('end', function () { sobratBaytiki(buffer) })
011000 10101010 11011001 10000101 100000 11011000 10101010 11011000 111001 11011000 10101000 11011000 100110 11011000 10101001 00100000 011000 10100111 11011001 10000100 011001 10000011 11011000 10110001 011000 10110100 11011000 10101001 100000 11011000 10101000 11011001 000110 11011000 10101100 11011000 10100111 11011000 10101101
0s: 3925 1s: 3425
VNIMANIYE, OSHIBKA
{
'6': [
'011000', '100000', '111001', '100110', '011000', '011001',
'011000', '100000', '000110', '011000', '100000', '111001',
'100110', '011000', '011001', '011000', '100000', '000110',
'011000', '100000', '111001', '100110', '011000', '011001',
'011000', '100000', '000110', '011000', '100000', '111001',
'100110', '011000', '011001', '011000', '100000', '000110',
'011000', '100000', '111001', '100110', '011000', '011001',
'011000', '100000', '000110', '011000', '100000', '111001',
'100110', '011000', '011001', '011000', '100000', '000110',
'011000', '100000', '111001', '100110', '011000', '011001',
'011000', '100000', '000110', '011000', '100000', '111001',
'100110', '011000', '011001', '011000', '100000', '000110',
'011000', '100000', '111001', '100110', '011000', '011001',
'011000', '100000', '000110', '011000', '100000', '111001',
'100110', '011000', '011001', '011000', '100000', '000110',
'011000', '100000', '111001', '100110', '011000', '011001',
'011000', '100000', '000110', '011000',
... 125 more items
],
'8': []
}
[ [ 8 ] ]
0s: 3075 1s: 2925