Submission #1078880

#TimeUsernameProblemLanguageResultExecution timeMemory
1078880raphaelpBroken Device (JOI17_broken_device)C++14
100 / 100
32 ms2656 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; void Anna(int N, long long X, int K, int P[]) { map<vector<int>, vector<int>> M; M[{1, 1}] = {1, 1, 1}; M[{1}] = {1, 1, 0}; M[{1, 0}] = {1, 0, 1}; M[{0}] = {1, 0, 0}; M[{0, 1}] = {0, 1, 1}; M[{0, 0}] = {0, 1, 0}; vector<int> P2(N); for (int i = 0; i < K; i++) P2[P[i]] = 1; vector<int> ans(N); int buff = 0; vector<int> bits; while (X) { bits.push_back(X % 2); X /= 2; } while (bits.size() < 60) bits.push_back(0); reverse(bits.begin(), bits.end()); for (int i = 0; i < N; i += 3) { if (buff == bits.size()) break; vector<int> temp; if (P2[i] + P2[i + 1] + P2[i + 2] > 1) continue; if (P2[i] == 1) { if (bits[buff] == 1) { temp = {0, 0, 1}; buff++; } else if (buff < bits.size() - 1 && bits[buff] == 0) { temp = M[{bits[buff], bits[buff + 1]}]; buff += 2; } else { temp = {0, 1, 0}; buff++; } } else if (P2[i + 1] == 1) { if (bits[buff] == 1) temp = {0, 0, 1}; else temp = {1, 0, 0}; buff++; } else if (P2[i + 2] == 1) { if (bits[buff] == 1) temp = {1, 1, 0}; else temp = {1, 0, 0}; buff++; } else { if (buff < bits.size() - 1) { temp = M[{bits[buff], bits[buff + 1]}]; buff += 2; } else { temp = M[{bits[buff]}]; buff++; } } if (!temp.empty()) ans[i] = temp[0], ans[i + 1] = temp[1], ans[i + 2] = temp[2]; } for (int i = 0; i < N; i++) { // cout << ans[i] << ' '; Set(i, ans[i]); } } /*int main() { long long N, X, K; cin >> N >> X >> K; int P[N]; srand(time(0)); for (long long i = 0; i < K; i++) P[i] = rand() % N; Anna(N, X, K, P); }*/
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; long long Bruno(int N, int A[]) { map<vector<int>, vector<int>> M; M[{1, 1, 1}] = {1, 1}; M[{1, 1, 0}] = {1}; M[{1, 0, 1}] = {1, 0}; M[{1, 0, 0}] = {0}; M[{0, 1, 1}] = {0, 1}; M[{0, 1, 0}] = {0, 0}; M[{0, 0, 1}] = {1}; long long X = 0; int compte = 0; for (int i = 0; i < N; i += 3) { vector<int> temp = {A[i], A[i + 1], A[i + 2]}; if (temp[0] + temp[1] + temp[2] == 0) continue; else temp = M[temp]; for (int j = 0; j < temp.size(); j++) { X *= 2; X += temp[j]; compte++; } } if (compte > 60) X /= 2; return X; } /*int main() { int N; cin >> N; int A[N]; for (int i = 0; i < N; i++) cin >> A[i]; cout << Bruno(N, A); }*/

Compilation message (stderr)

Anna.cpp: In function 'void Anna(int, long long int, int, int*)':
Anna.cpp:30:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |         if (buff == bits.size())
      |             ~~~~~^~~~~~~~~~~~~~
Anna.cpp:42:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |             else if (buff < bits.size() - 1 && bits[buff] == 0)
      |                      ~~~~~^~~~~~~~~~~~~~~~~
Anna.cpp:71:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |             if (buff < bits.size() - 1)
      |                 ~~~~~^~~~~~~~~~~~~~~~~

Bruno.cpp: In function 'long long int Bruno(int, int*)':
Bruno.cpp:23:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |         for (int j = 0; j < temp.size(); j++)
      |                         ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...