Submit solution


Points: 1
Time limit: 1.0s
Memory limit: 512M

Problem type

Dato vam je m skupova P_{i}, Q_{i}: \forall i (1 \leq i \leq m), P_{i},Q_{i} \subset \{1,...,i-1\}. Postoji m ugnježdenih for petlji i za j-tu petlju, promenljiva u petlji je i_{j}, njena donja granica, određena promenljivim u prethodnim petljama, je max \{ i_{k}(k \in P_{j})\}(posebno ukoliko je P_{j} prazan skup, donja granica je 1), a njena gornja granica, takođe određena promenljivim u prethodnim petljama, je min \{ i_{k}(k \in Q_{j})\}(posebno ukoliko je Q_{j} prazan skup, gornja granica je n)

Interesuje vas koliko će se puta po modulu p izvršiti telo m-te (najdublje) petlje.

Opis ulaza

U prvoj liniji su tri pozitivna cela broja m, n, p (1 \leq m \leq 15, 1 \leq n \leq 10^9, 2 \leq p \leq 10^9+7). Sledi m linija, u i-toj se nalazi nekoliko nenegativnih brojeva, koji opisuju skupove P_{i} i Q_{i}. Prvi je broj A_{i}, koji označava veličinu skupa P_{i}, zatim sledi A_{i} celih brojeva, koji predstavljaju elemente skupa P_{i}. Sledi broj B_{i}, koji označava veličinu skupa Q_{i}, a zatim sledi B_{i} brojeva, koji predstavljaju elemente skupa Q_{i}.

Opis izlaza

Ispisati jedan nenegativan broj - koliko će se puta telo unutrasnje petlje izvršiti po modulu p.

Primer ulaza

6 10 987654321
0 0
1 1 0
0 0
1 3 0
0 1 4
1 2 2 1 2

Primer izlaza

3850

Objašnjenje primera

U kodu ispod su napisane petlje iz primera u jeziku C++. Treba ispisati koliko će se puta izvršiti telo šeste, najdublje petlje:

int n=10;
for(int i1=1;i1<=n;i1++) {
    for(int i2=i1;i2<=n;i2++) {
        for(int i3=1;i3<=n;i3++) {
            for(int i4=i3;i4<=n;i4++) {
                for(int i5=1;i5<=i4;i5++) {
                    for(int i6=i2;i6<=min(i1,i2);i6++) {
                        //telo najdublje, m-te petlje
                    }
                }
            }
        }
    }
}

Comments

There are no comments at the moment.