#4817
cromatic
Fie a = (a[1], a[2], ..., a[n])
un șir de n
numere întregi. Pentru fiecare k ∈ {1,2, ...,n}
, definim min[k] = min{a[1], a[2], ... ,a[k]}
și max[k] = max{a[1], a[2], ...,a[k]}
. Astfel, asociem șirului a
un alt șir de intervale închise minmax = ([min[1], max[1]], [min[2], max[2]], ..., [min[n], max[n]])
. Vom spune că șirul a
este un șir cromatic dacă și numai dacă elementele șirului minmax
sunt distincte două câte două, adică nu există două intervale identice în șir. Dându-se un șir a
, nu neapărat cromatic, să se determine:
NSC
ce se pot forma prin rearanjarea elementelor șirului a
. Întrucât acest număr poate fi foarte mare, se cere NSC
modulo 1.000.000.007
.a
este cromatic, să se determine poziția p ∈ {1, 2, ..., NSC}
a șirului a
în lista ordonată lexicografic a tuturor permutărilor cromatice ale lui a
.q ∈ {1, 2, ..., NSC}
, să se determine cel de-al q
-lea șir cromatic în ordine lexicografică ce se poate obține prin rearanjarea elementelor șirului a
.Problema | cromatic | Operații I/O |
![]() cromatic.in /cromatic.out
|
---|---|---|---|
Limita timp | 1.5 secunde | Limita memorie |
Total: 256 MB
/
Stivă 64 MB
|
Id soluție | #58440867 | Utilizator | |
Fișier | cromatic.cpp | Dimensiune | 4.62 KB |
Data încărcării | 04 Iunie 2025, 16:38 | Scor / rezultat | Eroare de compilare |
cromatic.cpp:4:18: warning: multi-character character constant [-Wmultichar] const int MOD = 1'000'000'007; ^ cromatic.cpp:4:26: warning: missing terminating ' character [enabled by default] const int MOD = 1'000'000'007; ^ cromatic.cpp:4:1: error: missing terminating ' character const int MOD = 1'000'000'007; ^ cromatic.cpp:4:18: error: expected ',' or ';' before '\x303030' const int MOD = 1'000'000'007; ^ cromatic.cpp:11:16: error: 'N' was not declared in this scope long long fact[N], invFact[N]; ^ cromatic.cpp:11:28: error: 'N' was not declared in this scope long long fact[N], invFact[N]; ^ cromatic.cpp: In function 'void precalc()': cromatic.cpp:25:5: error: 'fact' was not declared in this scope fact[0] = invFact[0] = 1; ^ cromatic.cpp:25:15: error: 'invFact' was not declared in this scope fact[0] = invFact[0] = 1; ^ cromatic.cpp:26:25: error: 'N' was not declared in this scope for (int i = 1; i < N; i++) { ^ cromatic.cpp: In function 'long long int comb(int, int)': cromatic.cpp:34:12: error: 'fact' was not declared in this scope return fact[n] * invFact[k] % MOD * invFact[n - k] % MOD; ^ cromatic.cpp:34:22: error: 'invFact' was not declared in this scope return fact[n] * invFact[k] % MOD * invFact[n - k] % MOD; ^ cromatic.cpp: In function 'bool is_cromatic(const std::vector<int>&)': cromatic.cpp:41:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 1; i < v.size(); i++) { ^ cromatic.cpp: In function 'int get_position(std::vector<int>)': cromatic.cpp:69:13: warning: unused variable 'greater' [-Wunused-variable] int greater = n - 1 - smaller; ^ cromatic.cpp:77:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 1; i < perm.size(); ++i) { ^ cromatic.cpp:78:45: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int j = 0; j < interleave.size(); ++j) { ^ cromatic.cpp:62:9: warning: unused variable 'k' [-Wunused-variable] int k = left.size(); ^ cromatic.cpp: In function 'std::vector<int> get_qth_sequence(std::vector<int>, int)': cromatic.cpp:92:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 0; i < sorted.size(); ++i) { ^ cromatic.cpp:108:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (bi < big.size()) { ^ cromatic.cpp:111:48: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (q <= ways && bi < big.size()) { ^ cromatic.cpp:114:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (bi < big.size()) q -= ways; ^ cromatic.cpp:94:26: warning: unused variable 'greater' [-Wunused-variable] int smaller = i, greater = n - 1 - i; ^ cromatic.cpp: In function 'long long int comb(int, int)': cromatic.cpp:35:1: warning: control reaches end of non-void function [-Wreturn-type] } ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema cromatic 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ă.