# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
931183 | 2024-02-21T10:54:06 Z | boris_mihov | Ancient Machine (JOI21_ancient_machine) | C++17 | 55 ms | 9036 KB |
#include "Anna.h" #include <algorithm> #include <iostream> #include <cassert> #include <vector> typedef long long llong; const int BUCKET_SIZE = 73; const int MYLOG = 51; llong fib[BUCKET_SIZE + 5]; struct FibbonacciConverter { std::string getString(std::string s) { while (s.size() % BUCKET_SIZE != 0) { s += '0'; } // std::cout << "send: " << s << '\n'; std::string res; for (int i = 0 ; i < s.size() ; i += BUCKET_SIZE) { llong currNum = 0; for (int j = i ; j < i + BUCKET_SIZE ; ++j) { // if (j != i) assert(s[j] == '0' || s[j - 1] == '0'); if (s[j] == '1') currNum += fib[j - i]; assert(currNum < (1LL << MYLOG)); } // std::cout << "num is: " << currNum << '\n'; for (int log = MYLOG - 1 ; log >= 0 ; --log) { if (currNum & (1LL << log)) { res += '1'; } else { res += '0'; } } } return res; } std::string fromString(std::string s) { assert(s.size() % MYLOG == 0); std::string res; for (int i = 0 ; i < s.size() ; i += MYLOG) { llong currNum = 0; for (int j = i ; j < i + MYLOG ; ++j) { currNum *= 2; if (s[j]) { currNum++; } } std::string toAdd; for (int pos = BUCKET_SIZE ; pos > 0 ; --pos) { if (currNum >= fib[pos - 1]) { toAdd += '1'; currNum -= fib[pos - 1]; } else { toAdd += '0'; } } std::reverse(toAdd.begin(), toAdd.end()); res += toAdd; } return res; } }; void Anna(int N, std::vector <char> s) { fib[0] = 1; fib[1] = 2; fib[2] = 4; for (int i = 3 ; i < BUCKET_SIZE + 5 ; ++i) { fib[i] = fib[i - 1] + fib[i - 2]; } std::string res; bool foundX = false; int xPos = -2; for (int i = 0 ; i < N ; ++i) { if (!foundX && s[i] == 'X') { xPos = i; foundX = true; res += '1'; // std::cout << i << '\n'; } else if (foundX && s[i] == 'Z' && (i == xPos + 1 || (res.back() == '0' && (i + 1 == N || s[i + 1] != 'Z')))) { // std::cout << i << '\n'; res += '1'; } else { // assert(!foundX || s[i - 1] == 'X' || s[i] != 'Z' || (i + 1 < N && s[i + 1] == 'Z')); res += '0'; } } // std::cout << "Res before: " << res << '\n'; FibbonacciConverter converter; // res = converter.getString(res); // std::cout << "res: " << res.size() << '\n'; for (int i = 0 ; i < res.size() ; ++i) { Send(res[i] - '0'); } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 780 KB | Output is correct |
2 | Correct | 0 ms | 800 KB | Output is correct |
3 | Correct | 0 ms | 784 KB | Output is correct |
4 | Correct | 0 ms | 784 KB | Output is correct |
5 | Correct | 1 ms | 796 KB | Output is correct |
6 | Correct | 1 ms | 796 KB | Output is correct |
7 | Correct | 0 ms | 796 KB | Output is correct |
8 | Correct | 0 ms | 1292 KB | Output is correct |
9 | Correct | 0 ms | 796 KB | Output is correct |
10 | Correct | 0 ms | 796 KB | Output is correct |
11 | Correct | 1 ms | 784 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Partially correct | 41 ms | 8784 KB | Partially correct |
2 | Partially correct | 40 ms | 8552 KB | Partially correct |
3 | Partially correct | 40 ms | 8464 KB | Partially correct |
4 | Partially correct | 41 ms | 8588 KB | Partially correct |
5 | Partially correct | 40 ms | 8608 KB | Partially correct |
6 | Partially correct | 40 ms | 8532 KB | Partially correct |
7 | Partially correct | 40 ms | 8624 KB | Partially correct |
8 | Partially correct | 40 ms | 8556 KB | Partially correct |
9 | Partially correct | 40 ms | 8544 KB | Partially correct |
10 | Partially correct | 40 ms | 8548 KB | Partially correct |
11 | Partially correct | 40 ms | 8556 KB | Partially correct |
12 | Partially correct | 40 ms | 8616 KB | Partially correct |
13 | Partially correct | 45 ms | 8492 KB | Partially correct |
14 | Partially correct | 55 ms | 8588 KB | Partially correct |
15 | Partially correct | 43 ms | 8752 KB | Partially correct |
16 | Partially correct | 45 ms | 9036 KB | Partially correct |
17 | Partially correct | 46 ms | 8440 KB | Partially correct |
18 | Partially correct | 46 ms | 8488 KB | Partially correct |
19 | Partially correct | 46 ms | 8508 KB | Partially correct |
20 | Partially correct | 40 ms | 8632 KB | Partially correct |
21 | Partially correct | 42 ms | 9008 KB | Partially correct |
22 | Partially correct | 46 ms | 8580 KB | Partially correct |
23 | Partially correct | 40 ms | 8596 KB | Partially correct |
24 | Partially correct | 41 ms | 8612 KB | Partially correct |
25 | Partially correct | 46 ms | 8468 KB | Partially correct |
26 | Partially correct | 48 ms | 8392 KB | Partially correct |
27 | Partially correct | 46 ms | 8388 KB | Partially correct |
28 | Partially correct | 47 ms | 8588 KB | Partially correct |
29 | Partially correct | 46 ms | 8392 KB | Partially correct |
30 | Partially correct | 49 ms | 8424 KB | Partially correct |
31 | Partially correct | 46 ms | 8428 KB | Partially correct |
32 | Partially correct | 40 ms | 8560 KB | Partially correct |
33 | Partially correct | 40 ms | 8556 KB | Partially correct |