<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1413_-_ConstructPalindrom</id>
	<title>1413 - ConstructPalindrom - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1413_-_ConstructPalindrom"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1413_-_ConstructPalindrom&amp;action=history"/>
	<updated>2026-05-02T01:49:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1413_-_ConstructPalindrom&amp;diff=8954&amp;oldid=prev</id>
		<title>Codrut Borcutean: Pagină nouă: Mai sunt câteva săptămâni și vine Crăciunul. Ajuns într-un magazin de jucării, Robert îl roagă pe tatăl său să-i cumpere cea mai frumoasă mașină cu telecomandă. Tatăl său îi spune că nu a fost cuminte în timpul anului și nu merită această jucărie, însă după dispute intense acesta hotaraste să-i mai acorde o sansă, doar dacă va rezolva următoarea problema:  Având un string &#039;&#039;&#039;S&#039;&#039;&#039;, putem să obținem un palindrom din acest șir ștergând un s...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1413_-_ConstructPalindrom&amp;diff=8954&amp;oldid=prev"/>
		<updated>2024-01-04T09:11:52Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Mai sunt câteva săptămâni și vine Crăciunul. Ajuns într-un magazin de jucării, Robert îl roagă pe tatăl său să-i cumpere cea mai frumoasă mașină cu telecomandă. Tatăl său îi spune că nu a fost cuminte în timpul anului și nu merită această jucărie, însă după dispute intense acesta hotaraste să-i mai acorde o sansă, doar dacă va rezolva următoarea problema:  Având un string &amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039;, putem să obținem un palindrom din acest șir ștergând un s...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Mai sunt câteva săptămâni și vine Crăciunul. Ajuns într-un magazin de jucării, Robert îl roagă pe tatăl său să-i cumpere cea mai frumoasă mașină cu telecomandă. Tatăl său îi spune că nu a fost cuminte în timpul anului și nu merită această jucărie, însă după dispute intense acesta hotaraste să-i mai acorde o sansă, doar dacă va rezolva următoarea problema:&lt;br /&gt;
&lt;br /&gt;
Având un string &amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039;, putem să obținem un palindrom din acest șir ștergând un singur caracter?&lt;br /&gt;
&lt;br /&gt;
Robert nu se prea descurca la algoritmică așa că vă roagă foarte mult să-i rezolvați problema pentru a se putea juca cu mașina cu telecomandă. În schimbul acestei mașini el vă va recompensa cu 100 puncte.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Find dat un string &amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039;, se poate obține un palindrom din șirul inițial ștergând doar un singur caracter ?&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare &amp;#039;&amp;#039;&amp;#039;constructpalindromin.txt&amp;#039;&amp;#039;&amp;#039; conţine pe prima linie o valoare &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; reprezentând numărul de teste. Pe următoarele T linii vom avea cate un string reprezentând întrebarea adresata lui Robert de către tatăl sau.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire &amp;#039;&amp;#039;&amp;#039;constructpalindromout.txt&amp;#039;&amp;#039;&amp;#039; va conține &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039; linii cu răspunsul &amp;#039;&amp;#039;&amp;#039;YES&amp;#039;&amp;#039;&amp;#039; daca se poate obține un palindrom ștergând un singur caracter și &amp;#039;&amp;#039;&amp;#039;NO&amp;#039;&amp;#039;&amp;#039; dacă nu se poate obține.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; T &amp;amp;les; 100&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Dimensiunea stringului &amp;#039;&amp;#039;&amp;#039;&amp;amp;les; 100000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Pentru 10% din punctaj dimensiunea stringului &amp;#039;&amp;#039;&amp;#039;&amp;amp;les; 1000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* String-ul conține caractere de la &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039; la &amp;#039;&amp;#039;&amp;#039;z&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Dimensiunea string-ului după ștergerea unui caracter va fi mai mică decât a fost înainte.&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; constructpalindromin.txt&lt;br /&gt;
 4&lt;br /&gt;
 aaa&lt;br /&gt;
 abc&lt;br /&gt;
 abdbca&lt;br /&gt;
 abba&lt;br /&gt;
; constructpalindromout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 YES&lt;br /&gt;
 NO&lt;br /&gt;
 YES&lt;br /&gt;
 YES&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; constructpalindromin.txt&lt;br /&gt;
 40000000&lt;br /&gt;
 aaa&lt;br /&gt;
 abc&lt;br /&gt;
 abdbca&lt;br /&gt;
 abba&lt;br /&gt;
; constructpalindromout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
Pentru primul exemplu (&amp;#039;&amp;#039;&amp;#039;aaa&amp;#039;&amp;#039;&amp;#039;): Putem șterge orice &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039;, string-ul rezultat este &amp;#039;&amp;#039;&amp;#039;aa&amp;#039;&amp;#039;&amp;#039;, care este palindrom.&lt;br /&gt;
&lt;br /&gt;
Pentru al doilea exemplu (&amp;#039;&amp;#039;&amp;#039;abc&amp;#039;&amp;#039;&amp;#039;): Nu este posibil să eliminăm exact un caracter și să obtinem un palindrom.&lt;br /&gt;
&lt;br /&gt;
Pentru al treilea exemplu (&amp;#039;&amp;#039;&amp;#039;abdbca&amp;#039;&amp;#039;&amp;#039;): ștergem caracterul &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;, string-ul rezultat este &amp;#039;&amp;#039;&amp;#039;abdba&amp;#039;&amp;#039;&amp;#039; care este palindrom.&lt;br /&gt;
&lt;br /&gt;
Pentru exemplul al patrulea (&amp;#039;&amp;#039;&amp;#039;abba&amp;#039;&amp;#039;&amp;#039;): Ștergem &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039;, obținem &amp;#039;&amp;#039;&amp;#039;aba&amp;#039;&amp;#039;&amp;#039; care este palindrom.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def is_palindrome(s):&lt;br /&gt;
    # Funcția verifică dacă un șir este palindrom.&lt;br /&gt;
&lt;br /&gt;
    return s == s[::-1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def can_form_palindrome(s):&lt;br /&gt;
    # Funcția verifică dacă se poate forma un palindrom ștergând un singur caracter din șirul s.&lt;br /&gt;
&lt;br /&gt;
    for i in range(len(s)):&lt;br /&gt;
        t = s[:i] + s[i + 1:]&lt;br /&gt;
        if is_palindrome(t):&lt;br /&gt;
            return True&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;#039;constructpalindromin.txt&amp;#039;, &amp;#039;r&amp;#039;) as fin, open(&amp;#039;constructpalindromout.txt&amp;#039;, &amp;#039;w&amp;#039;) as fout:&lt;br /&gt;
        t = int(fin.readline().strip())&lt;br /&gt;
&lt;br /&gt;
        # Verificăm dacă numărul de teste respectă restricțiile&lt;br /&gt;
        if not (1 &amp;lt;= t &amp;lt;= 100):&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        for _ in range(t):&lt;br /&gt;
            s = fin.readline().strip()&lt;br /&gt;
&lt;br /&gt;
            # Verificăm dacă șirul respectă restricțiile&lt;br /&gt;
            if len(s) &amp;gt; 100000:&lt;br /&gt;
                fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
                return&lt;br /&gt;
&lt;br /&gt;
            # Verificăm dacă se poate forma un palindrom și scriem rezultatul în fișierul de ieșire&lt;br /&gt;
            fout.write(&amp;#039;YES\n&amp;#039; if can_form_palindrome(s) else &amp;#039;NO\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Codrut Borcutean</name></author>
	</entry>
</feed>