Jožo nemá rád svojich spolužiakov. Neustále im robí zle a najradšej by ich vôbec nevidel. Keď je s nejakým spolužiakom na prednáške, radšej zaspí. Rozhodol sa preto, že svoj nový rozvrh zostaví tak, aby bol s každým spolužiakom čo nejmenej.
Nažhavil teda larsa1 a začal hackovať univerzitné účty svojich nenávidených spolužiakov. Netrvalo dlho, aby zistil rozvrhy všetkých ľudí, s ktorými sa nechce stretávať.
Počas hackovania sa Jožovi vybil počítač a nabíjačku má niekde hlboko v batohu. Nepripadá teda do úvahy, aby si tento optimalizačný problém vyriešil sám. Zostavíte Jožovi jeho nový rozvrh?
Jožo vám dodal rozvrhy svojich $n$ spolužiakov. Existuje $k$ predmetov. Očíslujme si ich od $1$ po $k$.
Každý spolužiak na každý predmet buď chodí, alebo nechodí. Reprezentujme si teda predmety každého spolužiaka binárnym reťazcom dĺžky $k$. Ak daný spolužiak chodí na predmet číslo $i$, tak v binárnom reťazci bude na $i$-tej pozícii $1$, ináč bude na $i$-tej pozícii $0$.
Vzdialenosť od spolužiaka Jožo definuje ako počet predmetov, na ktoré spolužiak chodí a Jožo nechodí, alebo spolužiak nechodí a Jožo chodí. Ináč povedané, keď si napíšeme spolužiakov a Jožov rozvrh pod seba, tak vzdialenosť od spolužiaka bude počet pozícií, na ktorých sa tieto rozvrhy líšia.
Vašou úlohou bude zostaviť Jožov rozvrh tak, aby bola minimálna vzdialenosť od spolužiaka (spomedzi všetkých spolužiakov) čo najväčšia.
Na prvom riadku dostanete čísla $n$ – počet spolužiakov a $k$ – počet predmetov. Platí, že $1 \leq n \leq 100\,000$ a $1 \leq k \leq 20$
Nasleduje $n$ riadkov. Na každom z nich je binárny reťazec dĺžky $k$. Na $i$-tom z týchto $n$ riadkov je popis rozvrhu $i$-teho spolužiaka vo vyššie popísanom formáte.
Na jediný riadok výstupu vypíšte nový Jožov rozvrh. Ak takých rozvrhov existuje viac, vypíšte z nich lexikograficky najmenší.
Sú 4 sady vstupov. Platia v nich nasledovné obmedzenia:
| Sada | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| $1\leq n\leq$ | $10$ | $1\,000$ | $10\,000$ | $100\,000$ |
| $1\leq k\leq$ | $20$ | $10$ | $20$ | $20$ |
Input:
3 5
01101
10101
00011
Output:
11000
Input:
1 6
011011
Output:
100100
Jožov počítač ↩
Korešpondenčný seminár z programovania zastrešuje občianske združenie Trojsten.
Trojsten, o.z.
FMFI UK, Mlynská dolina
842 48 Bratislava
Programátorská súťaž pre základoškolákov
Materiály a úlohy na výučbu programovania
Intenzívny programátorský zážitok v lete