Diferente pentru documentatie/textile intre reviziile #106 si #107

Nu exista diferente intre titluri.

Diferente intre continut:

== include(page="template/taskheader" task_id="countfefete") ==
h1.
Romeo Fefetastic locuieşte în cartierul băieţilor buni şi are $N$ prieteni în cartier. Acest cartier este reprezentat ca un arbore cu $N$ noduri, unde în fiecare nod stă câte un prieten. Fiecare dintre prietenii lui are câte o valoare, $v[i], 1 ≤ i ≤ N$.
Înainte ca Romeo să plece la plimbare cu motoreta prin cartier, el îşi face o listă cu toţi prietenii pe la care vrea să treacă pentru a-i vizita. Acesta va trece succesiv pe la toţi prietenii săi, de fiecare dată alegând drumul minim. Practic, Romeo se va plimba prin toate nodurile care aparţin subarborelui conex cu număr minim de noduri care include toţi prietenii din lista sa, subarbore notat cu $S$.
El cunoaşte cum arată cartierul şi ştie că în peregrinajul său va trece şi prin faţa caselor unor prieteni care nu apar pe listă, deci nu îi va vizita. După ce a trecut pe la toţi prietenii pe care şi-a propus să îi viziteze, el decide să se oprească la nodul celui mai nevaloros prieten dintre toate nodurile prin care a trecut, pentru a-l învăţa şi pe acesta cum se fac punctele. Prietenul cel mai nevaloros locuieşte în nodul cu cea mai mică valoare din subarborele $S$. În caz că acel prieten se află deja pe lista sa, îl va vizita de două ori.
Un text este structurat pe mai multe paragrafe. Atunci când folositi Textile, paragrafele trebuie separate de o linie alba ( goală ).
Dacă Romeo îşi vizitează prietenii din nodurile n{~1~} , n{~2~} , ..., n{~k~} , şi se opreşte în mod excepţional la prietenul cel mai nevaloros care ar sta în nodul n ${~nevaloros~}$ , atunci definim valoarea plimbării efectuate ca fiind $v[n{~1~}] xor v[n{~2~}] xor ... xor v[n{~k~}] xor v[n{~nevaloros~}]$. În caz că sunt mai mulţi prieteni la fel de nevaloroşi, Romeo merge la unul singur dintre
aceştia.
 
Lui Romeo Fefetastic îi place mai mult gânditul decât acţiunea. Aşadar, îşi imaginează că vrea să viziteze toate submulţimile posibile de prieteni şi se întreabă care ar fi suma pentru toate plimbările posibile.
 
Se cere aşadar găsirea sumei valorilor plimbărilor pentru **toate submulţimile nevide** de prieteni pe care Romeo le poate vizita şi afişarea acestei sume modulo $10^9^ + 7$.
 
h2. Date de intrare
 
Pe primul rând al fişierului de intrare $countfefete.in$ apare numărul de prieteni din cartier $N$.
Pe al doilea rând apare şirul $v$ format din $N$ numere, unde $v[i]$ reprezintă valoarea prietenului care stă în nodul $i$.
Pe fiecare dintre următoarele $N – 1$ rânduri se va afla o pereche de numere $x$ şi $y$, cu semnificaţia că de la nodul $x$ la nodul $y$ există un drum direct.
 
h2. Date de ieşire
 
În fişierul de ieşire $countfefete.out$ se va scrie suma cerută *modulo 10^9^ + 7*.
 
h2. Restricţii
 
* $1 ≤ N ≤ 200 000$
* $0 ≤ v[x] ≤ 1 000 000 000$, pentru orice $1 ≤ x ≤ N$
* Pentru teste în valoare de $15$ puncte se garantează că $N ≤ 15$
* Pentru alte teste în valoare de $25$ de puncte se garantează că $N ≤ 5 000$
* Pentru alte teste în valoare de $15$ puncte se garantează că $N ≤ 20 000$
* Pentru alte teste în valoare de $15$ de puncte se garantează că $N ≤ 70 000$
 
h2. Exemplu
 
table(example). |_. countfefete.in |_. countfefete.out |
| 3
7 3 2
1 2
2 3
| 21
|
| 3
1 1 1
1 3
2 3
| 3
|
| 5
1 3 7 2 5
1 2
2 3
2 4
4 5
| 98
|
 
h3. Explicaţie
 
Pentru testul $1$:
Avem $3$ prieteni cu valorile $v[1]=7, v[2]=3$ şi $v[3]=2$
Prietenii din cartier formează un lanţ $1 – 2 – 3$.
Considerăm toate submulţimile nevide de prieteni şi calculăm valoarea plimbărilor:
Pentru submulţimea ${1}$ va trece prin ${1}$, deci valoarea plimbării $= v[1] ^ v[1] = 0$.
Pentru submulţimea ${2}$ va trece prin ${2}$, deci valoarea plimbării $= v[2] ^ v[2] = 0$.
Pentru submulţimea ${3}$ va trece prin ${3}$, deci valoarea plimbării $= v[3] ^ v[3] = 0$.
Pentru submulţimea ${1, 2}$ va trece prin ${1, 2}$, iar valoarea minimă este în $v[2] = 3$, deci valoarea plimbării $= v[1] xor v[2] xor v[2] = 7$.
Pentru submulţimea ${2, 3}$ va trece prin ${2, 3}$, iar valoarea minimă este în $v[3] = 2$, deci valoarea plimbării $= v[2] xor v[3] xor v[3] = 3$.
Pentru submulţimea ${1, 3}$ va trece prin ${1, 2, 3}$, iar valoarea minimă este în $v[3] = 2$, deci valoarea plimbării $= v[1] xor v[3] xor v[3] = 7$.
Pentru submulţimea ${1, 2, 3}$ va trece prin ${1, 2, 3}$, iar valoarea minimă este în $v[3] = 2$, deci valoarea plimbării $= v[1] xor v[2] xor v[3] xor v[3] = 4$.
Suma valorilor tuturor plimbărilor posibile va fi astfel
$0 + 0 + 0 + 7 + 3 + 7 + 4 = 21$.
== include(page="template/taskfooter" task_id="countfefete") ==
 
Un întreg paragraf se poate transforma cu usurinţă într-un header, folosind sintaxa {$hn$} la începutul paragrafului, unde {$n$} este un numar de la $1$ la $6$. De exemplu, _Textile_ va interpreta linia @h1. Primul header@ ca @<h1>Primul header</h1>@ şi rezultatul va fi:
 
h1. Primul header
 
h2. Modificatori
 
Pentru a scrie un text cu diferite efecte ( îngroşat, înclinat, subliniat, tăiat ) sau în diferite poziţii ( puteri sau indici ) se scrie textul care se doreşte a fi modificat între modificatorii corespunzători. În tabelul de mai jos este prezentat modul de folosire al acestora:
 
table(example). |_. Cod _Textile_|_. Cod HTML asociat|_. Rezultat |
|@**Un text îngroşat**@|@<b>Un text îngroşat</b>@|**Un text îngroşat**|
|@_Aici apare înclinat_@|@<i>Un text înclinat</i>@|_Aici apare înclinat_|
|@+Merge chiar şi subliniat+@|@<ins>Merge chiar şi subliniat</ins>@|+Merge chiar şi subliniat+|
|@-Text greşit-@|@<del>Text grşsit</del>@|-Text greşit-|
|@Pitagora: a^2^ + b^2^ = c^2^@|@Pitagora: a<sup>2</sup> + b<sup>2</sup> = c<sup>2</sup>@|a^2^ + b^2^ = c^2^|
|@Chiar şi logaritmi: log ~2~ N@|@Chiar şi logaritmi: log<sub>2</sub> N@|log ~2~ N|
 
 
În cazul in care rezultatele produse de limbajul de markup nu sunt cele aşteptate, se poate forţa folosirea acestor modificatori prin caracterele ${$ şi $}$ puse la începutul şi respectiv la sfârşitul secvenţei. De exemplu, @{**Text forţat**}@ are ca rezultat {**Text forţat**}.
 
Printre aceste caractere speciale există şi @, care opreşte formatările speciale într-o secvenţă. Exemplu: &#64;&#42;capşună&#42;&#64; are ca rezultat &#42;capşună&#42;. Daca asta nu funcţionează în pasajul tău poţi să foloseşti direct 'entităti HTML':http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references. Poţi să scrii &amp;#42;elefanţi&amp;#42; pentru a obtine &#42;elefanţi&#42;.
 
h2. Liste
 
Pentru a crea o lista numerică cu Textile, este suficient să inserăm $#$ înainte de fiecare paragraf:
 
@# Primul item@
@# Al doilea item@
@# Al treile item@
 
va genera:
 
# Primul item
# Al doilea item
# Al treilea item
 
De asemenea este posibil ca listele să fie îmbrăcate, incrementând numarul de caractere $#$. Listele vor avea o structura arborescentă:
 
@# Un item@
@## Alt item@
@### Alt item@
@# Al doilea item@
 
va genera :
 
# Un item
## Alt item
### Alt item
# Al doilea item
 
Dacă în locul listelor indexate numeric se doreşte crearea listelor cu bulete ( _bulleted lists_ ), în loc de $#$ se va folosi $*$. Regula pentru liste îmbrăcate rămâne valabilă şi aici:
 
@* Capitolul 1@
@** Capitolul 1.1@
@*** Capitolul 1.1.1@
@* Capitolul 2@
 
produce următorul efect :
 
* Capitolul 1
** Capitolul 1.1
*** Capitolul 1.1.1
* Capitolul 2
 
h2. Referinţe externe
 
Pentru a crea o referinţă către un alt site ( un _link_ ), textul descriptiv va fi plasat între ghilimele duble ($"$), urmat imediat de caracterul $:$ si de URL-ul dorit: @Link către "infoarena":http://infoarena.ro@ va fi interpretat ca "Link către "infoarena":http://infoarena.ro". Dacă un link este folosit de mai multe ori în acelaşi document sau dacă se doreşte o mai bună organizare a textului, este posibil ca URL-ul să fie specificat oriunde în document: între paranteze pătrate se va afla identificatorul unic asociat linkului, dupa care urmează adresa propriu-zisă. În momentul în care dorim să inserăm în document acel link este suficient în loc de adresa completă să introducem doar identificatorul pe care l-am asociat adresei :
 
@Link către "infoarena":arena@
@Al doilea link către "infoarena":arena@
 
@[arena]http://infoarena.ro@
 
are rezultatul:
 
Link către "infoarena":arena
Al doilea link către "infoarena":arena
 
[arena]http://infoarena.ro
 
Pentru a posta o imagine pe site, este necesar în prealabil să o salvaţi pe server. Pentru aceasta este suficient să apasaţi butonul $Ataşează$ din colţul dreapta-sus al paginii pe care o editaţi şi să selectati imaginea pe care doriţi să o transferaţi pe server. După aceea, pentru a introduce imaginea în pagină va trebui să introduceţi URL-ul ei între semnul exclamării ($!$).
 
Dacă am încărcat deja imaginea logo.jpg in pagină curentă,
@!documentatie/textile?logo.jpg!@ va avea rezultatul :
 
!documentatie/textile?logo.jpg!
 
h2. Tabele
 
Tabelele simple pot fi construite separând câmpurile lor prin caracterul $|$.
 
@| nume | vârstă | judeţ |@
@| Popescu | 24 | Bucureşti |@
@| Ionescu | 12 | Constanta |@
 
va genera tabelul de mai jos:
 
| nume | vârstă | judeţ |
| Popescu | 24 | Bucureşti |
| Ionescu | 12 | Constanta |
 
Celulele care doresc să fie făcute cap de tabel vor fi marcate iniţial printr-un _underscore_, urmat imediat de un punct.
 
@|_. nume |_. vârstă |_. judeţ |@
@| Popescu | 24 | Bucureşti |@
@| Ionescu | 12 | Constanta |@
 
va avea urmatorul rezultat:
 
|_. nume |_. vârstă |_. judeţ |
| Popescu | 24 | Bucureşti |
| Ionescu | 12 | Constanta |
 
h1. Cod <tex>\LaTeX</tex>
 
Atunci când dorim să introducem cod 'LaTeX':http://en.wikipedia.org/wiki/LaTeX putem folosi sintaxa:
$&lt;tex> cod LaTeX </tex&gt;$
 
De exemplu pentru codul:
 
$&lt;tex>$ @d = \frac{m_0^3}{\sqrt{3-\frac{v^2}{c^2}}} + \sqrt[3]{a^2 + b^2} - \log_3 \cos \frac{\pi}{3}@ $</tex&gt;$
 
se obţine următoarea imagine:
 
<tex> d = \frac{m_0^3}{\sqrt{3-\frac{v^2}{c^2}}} + \sqrt[3]{a^2 + b^2} - \log_3 \cos \frac{\pi}{3}</tex>
 
h2. Fragmente de cod
 
Atunci când dorim să inserăm un fragment de cod în pagina curentă, putem să folosim sintaxa:
 
@== code(limbaj) |@
@...fragment de cod...@
{@==@}
 
Următoarele limbaje sunt suportate:
 
* $code({@c@})$ pentru $C$
* $code(cpp)$ pentru $C++$
* $code(pas)$ pentru $Free Pascal$
* $code(java)$ pentru $Java$
 
Iată un exemplu:
 
== code(c) |
# include <stdio.h>
 
int a, b ;
 
int main ( void ) {
    fscanf ( fopen ( "adunare.in", "r" ), "%d %d", &a, &b ) ;
    fprintf ( fopen ( "adunare.out", "w" ), "%d", a + b ) ;
 
    return 0 ;
}
==
 
== code(cpp) |
# include <fstream>
 
int a, b ;
 
int main ( void ) {
    std :: ifstream f ( "adunare.in" ) ;
    std :: ofstream g ( "adunare.out" ) ;
 
    f >> a >> b ;
    g << a + b ;
}
==
 
== code(pas) |
program adunare ;
 
var a, b : longint ;
 
    begin
        freopen ( input, 'adunare.in' ) ; reset ( input ) ;
        freopen ( output, 'adunare.out' ) ; rewrite ( output ) ;
        readln ( a, b ) ;
        writeln ( a + b ) ;
        close ( input ) ; close ( output ) ;
    end.
==
 
h2. Aplicarea stilurilor $CSS$
 
Este posibil să ataşăm cod $CSS$ elementelor in felul urmator:
 
table(example). |_. Cod _Textile_|_. Cod HTML asociat|_. Rezultat |
|@text %{color:red}bau!% text@|@text <span style="color:red">bau!</span> text@|text %{color:red;}bau!% text|

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.