#3719
SDistante
Se dă un șir de caractere s
, care poate conține doar litere mici și mari ale alfabetului englez (de la a
la z
și de la A
la Z
). Pentru toate perechile neordonate de subsecvențe distincte ale șirului s
care au lungimi egale, vrem să calculăm distanța dintre ele și să afișăm suma acestora modulo 1.000.000.007
. Formal, se cere suma valorilor dist(s(a, b), s(c, d))
, pentru toți indicii a
, b
, c
, d
cu 0 ≤ a, b, c, d < |s|
, a < c
, a ≤ b
, c ≤ d
, b - a = d - c
, modulo 1.000.000.007
. |s|
reprezintă lungimea șirului s
, care este indexat de la 0
.
OJI 2021, clasa a X-a
Problema | SDistante | Operații I/O |
sdistante.in /sdistante.out
|
---|---|---|---|
Limita timp | 0.3 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #49794522 | Utilizator | |
Fișier | sdistante.cpp | Dimensiune | 965 B |
Data încărcării | 15 Martie 2024, 06:32 | Scor / rezultat | 100 puncte |
sdistante.cpp: In function 'int main()': sdistante.cpp:22:5: warning: 'char* gets(char*)' is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations] gets(s); ^ sdistante.cpp:22:11: warning: 'char* gets(char*)' is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations] gets(s); ^ sdistante.cpp:24:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i = 0;i < strlen(s); ++i) ^ sdistante.cpp:30:32: warning: array subscript has type 'char' [-Wchar-subscripts] long long cat = fr[s[i]] * (n - i - 1); ^ sdistante.cpp:32:47: warning: array subscript has type 'char' [-Wchar-subscripts] ans = (ans + totalSeq - cat - sum[s[i]] - fr[s[i]] + 1LL * 3 * mod) % mod; ^ sdistante.cpp:32:58: warning: array subscript has type 'char' [-Wchar-subscripts] ans = (ans + totalSeq - cat - sum[s[i]] - fr[s[i]] + 1LL * 3 * mod) % mod; ^ sdistante.cpp:33:23: warning: array subscript has type 'char' [-Wchar-subscripts] cat = sum[s[i]] * (n - i - 1); ^ sdistante.cpp:36:17: warning: array subscript has type 'char' [-Wchar-subscripts] sum[s[i]] += i, fr[s[i]]++; ^ sdistante.cpp:36:32: warning: array subscript has type 'char' [-Wchar-subscripts] sum[s[i]] += i, fr[s[i]]++; ^ sdistante.cpp:37:17: warning: array subscript has type 'char' [-Wchar-subscripts] sum[s[i]] %= mod; ^ sdistante.cpp:8:48: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] #define FILES freopen("sdistante.in","r",stdin);\ ^ sdistante.cpp:21:5: note: in expansion of macro 'FILES' FILES ^ sdistante.cpp:9:50: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("sdistante.out","w",stdout); ^ sdistante.cpp:21:5: note: in expansion of macro 'FILES' FILES ^ sdistante.cpp:22:12: warning: ignoring return value of 'char* gets(char*)', declared with attribute warn_unused_result [-Wunused-result] gets(s); ^ /tmp/ccBNow6R.o: In function \`main': sdistante.cpp:(.text.startup+0x6e): warning: the \`gets' function is dangerous and should not be used.
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
1 | 0 secunde | OK. | 5 | 5 | ||
2 | 0 secunde | OK. | 6 | 6 | ||
3 | 0 secunde | OK. | 2 | 2 | ||
4 | 0 secunde | OK. | 3 | 3 | ||
5 | 0 secunde | OK. | 5 | 5 | ||
6 | 0 secunde | OK. | 5 | 5 | ||
7 | 0 secunde | OK. | 5 | 5 | ||
8 | 0 secunde | OK. | 3 | 3 | ||
9 | 0 secunde | OK. | 3 | 3 | ||
10 | 0 secunde | OK. | 6 | 6 | ||
11 | 0 secunde | OK. | 6 | 6 | ||
12 | 0 secunde | OK. | 6 | 6 | ||
13 | 0 secunde | OK. | 6 | 6 | ||
14 | 0 secunde | OK. | 6 | 6 | ||
15 | 0.008 secunde | OK. | 2 | 2 | ||
16 | 0.004 secunde | OK. | 3 | 3 | ||
17 | 0.004 secunde | OK. | 2 | 2 | ||
18 | 0.008 secunde | OK. | 2 | 2 | ||
19 | 0.072 secunde | OK. | 3 | 3 | ||
20 | 0.072 secunde | OK. | 3 | 3 | ||
21 | 0.296 secunde | OK. | 6 | 6 | ||
22 | 0.296 secunde | OK. | 6 | 6 | ||
23 | 0.296 secunde | OK. | 6 | 6 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema SDistante face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.