CSES - Datatähti 2018 alku - Results
Submission details
Task:Bittijono
Sender:inkeri
Submission time:2017-10-11 19:25:29 +0300
Language:C++
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'std::array<long long int, 2ul> lyhinjono(ll, ll, ll, ll, ll, ll, ll)':
input/code.cpp:13:36: error: 'length' was not declared in this scope
     if (kokonaissumma > tavoite || length >= raja) {
                                    ^
input/code.cpp: In function 'int main()':
input/code.cpp:49:10: error: 'struct std::array<long long int, 2ul>' has no member named 'erase'
     jono.erase(0, 30 - jono[1]);
          ^
input/code.cpp:50:13: error: cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
     cout << jono << endl;
             ^
In file included from /usr/include/c++/4.8/istream:39:0,
                 from /usr/include/c++/4.8/sstream:38,
                 from /usr/include/c++/4.8/complex:45,
                 from /usr/include/c++/4.8/ccomplex:38,
                 from /usr/include/x86_64-linux-gnu/c++/4.8/bits/stdc++.h:52,
                 from input/code.cpp:1:
/usr/include/c++/4.8/ostream:602:5: error:...

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//tavoite: tavoiteltava summa
//lista: lisätyt luvut
//viimeinen: listan viimeinen luku
//summa: lisättävä summa jos lisätään eri luku kuin viimeinen
//kokonaisSumma: listan kokonaissumma
//raja: raja listan pituudelle (missä vaiheessa lopetetaan etsintä)
array<ll,2> lyhinjono(ll tavoite, ll arvo, ll viimeinen, ll summa, ll kokonaissumma, ll raja, ll pituus) {
if (kokonaissumma > tavoite || length >= raja) {
return {0,0};
}
if (kokonaissumma == tavoite) {
return {arvo, pituus};
}
pituus++;
//lisätään eri luku, arvo kasvaa summalla
array<ll, 2> jono1 = lyhinjono(tavoite, arvo + summa, summa, summa + viimeinen, kokonaissumma + summa, raja, pituus);
if (jono1[0] != 0) {
raja = pituus;
}
//lisätään sama luku, arvo kasvaa samalla kuin viimeksi
array<ll, 2> jono2 = lyhinjono(tavoite, arvo + summa, viimeinen, summa + viimeinen, kokonaissumma + viimeinen, raja, pituus);
if (jono2[0] != 0) {
return jono2;
}
return jono1;
}
int main() {
ll tavoite;
cin >> tavoite;
ll pituus = 1;
ll summa = 1;
ll a = 1;
ll b = 1;
while (summa < tavoite) {
pituus++;
ll c = a;
a += b;
b = c;
summa += a;
}
array<ll, 2> jono = lyhinjono(tavoite, 1, 1, 2, 1, pituus + 2, 1);
string bittijono = bitset<30>(jono[0]).to_string();
jono.erase(0, 30 - jono[1]);
cout << jono << endl;
}