CSES - Datatähti 2018 alku - Results
Submission details
Task:Bittijono
Sender:inkeri
Submission time:2017-10-10 18:34:36 +0300
Language:C++
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:45:11: error: 'jono' was not declared in this scope
       if (jono.size() > jono.max_size() / 2) {
           ^
input/code.cpp:47:7: error: expected ';' before '}' token
       }
       ^

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

//pitää lyhennellä listoja jotenkin
//jos vector<> jonoissa on long longeja, max_size pienempi --> aiheuttaa errorin
//jos taas vector<> jonoissa on inttejä, ovat ne liian pieniä suurimmille arvoille

int main() {
  ll tavoite;
  cin >> tavoite;
  if (tavoite == 1) {
      cout << tavoite << endl;
      return 0;
  }
  ll pituus = 1;
  ll maara = 1;
  ll prev0 = 2;
  ll prev1 = 1;
  while (maara < tavoite) {
      pituus++;
      if (pituus % 2 == 1) {
          maara += prev1;
          prev0 += prev1;
      } else {
          maara += prev0;
          prev1 += prev0;
      }
  }

  ll loppu = pow(2, pituus - 2);
  vector<array<ll, 3>> jonot;
  jonot.push_back({0, 0, 0});
  jonot.push_back({1, 2, 1});
  cout << jonot.max_size() << endl;
  for (ll i = 1; i < loppu; i++) {
      array<ll, 3> arvot = jonot[i];
      //lisätään 0
      jonot.push_back({arvot[0] + arvot[1], arvot[1], arvot[1] + arvot[2]});
      //lisätään 1
      jonot.push_back({arvot[0] + arvot[2], arvot[1] + arvot[2], arvot[2]});
  }
  ll i = loppu;
  while (true) {
      if (jono.size() > jono.max_size() / 2) {
          jono.erase(jono.begin(), jono.begin() + 1000)
      }
      array<ll, 3> arvot = jonot[i];
    //   cout << i << endl;
      if (arvot[0] + arvot[1] == tavoite) {
          string jono = bitset<64>(2*i).to_string();
          pituus = log(2*i)/log(2) + 1;
          jono.erase(0, 64 - pituus);
          cout << jono << endl;
          return 0;
      } else if (arvot[0] + arvot[2] == tavoite) {
          string jono = bitset<64>(2*i+1).to_string();
          pituus = log(2*i)/log(2) + 1;
          jono.erase(0, 64 - pituus);
          cout << jono << endl;
          return 0;
      }
      //lisätään 0
      jonot.push_back({arvot[0] + arvot[1], arvot[1], arvot[1] + arvot[2]});
      //lisätään 1
      jonot.push_back({arvot[0] + arvot[2], arvot[1] + arvot[2], arvot[2]});
      i++;
  }
}