<?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=3889_-_Cnt_Subsir_Max</id>
	<title>3889 - Cnt Subsir Max - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3889_-_Cnt_Subsir_Max"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3889_-_Cnt_Subsir_Max&amp;action=history"/>
	<updated>2026-05-01T21:51:15Z</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=3889_-_Cnt_Subsir_Max&amp;diff=10041&amp;oldid=prev</id>
		<title>RebecaBud: Pagină nouă: == Cerinţa == Felicia este interesată de subșirul maxim lexicografic al unui șir de caractere. Rețineți că un șir a este considerat mai mic în ordine lexicografică decât un șir b dacă a este prefix al lui b, sau dacă există o poziție i pentru care avem a[1] = b[1], ..., a[i − 1] = b[i − 1], și a[i] &lt; b[i]. Astfel, subșirul maxim lexicografic al unui șir de caractere este cel mai mare subșir, în ordinea lexicografică, al unui șir de caractere (de exe...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3889_-_Cnt_Subsir_Max&amp;diff=10041&amp;oldid=prev"/>
		<updated>2024-06-03T17:24:43Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Felicia este interesată de subșirul maxim lexicografic al unui șir de caractere. Rețineți că un șir a este considerat mai mic în ordine lexicografică decât un șir b dacă a este prefix al lui b, sau dacă există o poziție i pentru care avem a[1] = b[1], ..., a[i − 1] = b[i − 1], și a[i] &amp;lt; b[i]. Astfel, subșirul maxim lexicografic al unui șir de caractere este cel mai mare subșir, în ordinea lexicografică, al unui șir de caractere (de exe...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Felicia este interesată de subșirul maxim lexicografic al unui șir de caractere. Rețineți că un șir a este considerat mai mic în ordine lexicografică decât un șir b dacă a este prefix al lui b, sau dacă există o poziție i pentru care avem a[1] = b[1], ..., a[i − 1] = b[i − 1], și a[i] &amp;lt; b[i]. Astfel, subșirul maxim lexicografic al unui șir de caractere este cel mai mare subșir, în ordinea lexicografică, al unui șir de caractere (de exemplu zzxx pentru azbxazbxaax). Pentru un șir s de caractere vom nota cu m(s) subșirul maxim lexicografic al lui s, și cu v(s) = |m(s)| lungimea acestui subșir. Felicia vă dă un șir s format din caractere mici ale alfabetului englez. Considerați toate subsecvențele continue s&amp;#039; ale lui s. Felicia vrea să calculați suma valorilor v(s&amp;#039;) pentru toate subsecvențele posibile s&amp;#039; amintite anterior.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe singura linie citită de la tastatură se va găsi șirul s.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Să se afișeze suma cerută, modulo 109+7.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1≤N≤106&lt;br /&gt;
== Subtask ==&lt;br /&gt;
* N≤15&lt;br /&gt;
== Subtask ==&lt;br /&gt;
* N≤200&lt;br /&gt;
== Subtask ==&lt;br /&gt;
* N≤2000&lt;br /&gt;
== Subtask ==&lt;br /&gt;
* N≤5⋅104&lt;br /&gt;
== Subtask ==&lt;br /&gt;
* Fară restricții suplimentare.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
&lt;br /&gt;
  cab&lt;br /&gt;
; Ieșire&lt;br /&gt;
&lt;br /&gt;
 8&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Pentru primul exemplu, observăm că m(c) = c, m(a) = a, m(b) = b, m(ca) = ca, m(ab) = b, m(cab) = cb.&lt;br /&gt;
Astfel, răspunsul este 1 + 1 + 1 + 2 + 1 + 2 = 8. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
&lt;br /&gt;
  felicia&lt;br /&gt;
; Ieșire&lt;br /&gt;
&lt;br /&gt;
  59&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
MOD = 10**9 + 7&lt;br /&gt;
&lt;br /&gt;
def max_lexicographic(s):&lt;br /&gt;
    max_substring = s[0]&lt;br /&gt;
    for i in range(1, len(s)):&lt;br /&gt;
        if s[i] &amp;gt;= max_substring[0]:&lt;br /&gt;
            max_substring = s[i] + max_substring&lt;br /&gt;
        else:&lt;br /&gt;
            max_substring += s[i]&lt;br /&gt;
    return max_substring&lt;br /&gt;
&lt;br /&gt;
def sum_of_max_substrings(s):&lt;br /&gt;
    total_sum = 0&lt;br /&gt;
    for i in range(len(s)):&lt;br /&gt;
        max_substring = max_lexicographic(s[i:])&lt;br /&gt;
        total_sum += len(max_substring)&lt;br /&gt;
        total_sum %= MOD&lt;br /&gt;
    return total_sum&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    s = input().strip()&lt;br /&gt;
    result = sum_of_max_substrings(s)&lt;br /&gt;
    print(result)&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>RebecaBud</name></author>
	</entry>
</feed>