Diferente pentru problema/paranteze3 intre reviziile #10 si #1

Nu exista diferente intre titluri.

Diferente intre continut:

== include(page="template/taskheader" task_id="paranteze3") ==
Un şir conţinând numai paranteze de tipul $'('$ şi $')'$ este echilibrat în următoarele condiţii:
 
* şirul $()$ este echilibrat;
* concatenarea a două şiruri echilibrate este un şir echilibrat;
* dacă $s$ este un şir echilibrat, atunci $(s)$ este un şir echilibrat.
 
Condiţia de echilibrare este mai "tare" decât faptul că numărul de paranteze $'('$ şi $')'$ este egal. De exemplu şirul $'())(()'$ nu este echilibrat.
 
Sarcina voastră este de a reechilibra un şir de paranteze echilibrat, după ce o singură paranteză din şir este inversată. Mai exact, fiind dat un şir echilibrat şi după ce o paranteză la o poziţie specificată este inversată, trebuie inversată *cea mai din stânga* paranteză care reechilibrează şirul.
 
După ce şirul a fost modificat prin inversarea parantezei de la poziţia determinată de voi, operaţia continuă cu specificarea unei alte poziţii la care se inversează o paranteză, urmând ca voi să determinaţi din nou poziţia parantezie celei mai din stânga, a cărei inversare reechilibrează şirul.
Poveste şi cerinţă...
h2. Date de intrare
Fişierul de intrare $paranteze3.in$ conţine mai multe exemple de test. Fiecare exemplu de test conţine pe prima linie numerele întregi $N$ şi $Q$, separate de un spaţiu. Pe următoarea linie este dat şirul echilibrat $s$ având lungimea $N$. Urmează o linie conţinând $Q$ întregi $q{~i~}$ ($1 ≤ q{~i~} ≤ N$) separaţi prin spaţiu, indicând poziţia parantezei inversate care dezechilibrează şirul. Fişierul se termină cu o linie care conţine 0.
Fişierul de intrare $paranteze3.in$ ...
h2. Date de ieşire
Fişierul de ieşire $paranteze3.out$ conţine pentru fiecare exemplu de test o singură linie care conţine $Q$ întregi $l{~i~}$ separaţi prin spaţiu, reprezentând poziţia celei mai din stânga paranteze care reechilibrează şirul după inversarea parantezei $q{~i~}$.
În fişierul de ieşire $paranteze3.out$ ...
h2. Restricţii
* $2 ≤ N ≤ 10000$
* $1 ≤ Q ≤ 5000$
* fişierul de intrare conţine cel mult 20 de teste
* $... ≤ ... ≤ ...$
h2. Exemplu
table(example). |_. paranteze3.in |_. paranteze3.out |
| 6 3
((()))
4 3 1
20 9
()((((()))))()()()()
15 20 13 5 3 10 3 17 18
0
| 2 2 1
  2 20 8 5 3 2 2 3 18
| This is some
  text written on
  multiple lines.
| This is another
  text written on
  multiple lines.
|
h3. Explicaţie
În primul exemplu de test $'((()))'$ se inversează paranteza 4 şi se reechilibrează inversând paranteza 2. La şirul rezultat $'()(())'$ se inversează paranteza 3 şi se reechilibrează inversând paranteza 2. La rezultatul $'(()())'$ se inversează paranteza 1 şi se reechilibrează inversând tot paranteza 1.
...
== include(page="template/taskfooter" task_id="paranteze3") ==

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.