Submission #243120

#TimeUsernameProblemLanguageResultExecution timeMemory
243120osaaateiasavtnlBroken Device (JOI17_broken_device)C++14
85 / 100
54 ms3072 KiB
#include<bits/stdc++.h> using namespace std; #define ii pair <int, int> #define app push_back #define all(a) a.begin(), a.end() #define bp __builtin_popcountll #define ll long long #define mp make_pair #define f first #define s second #define Time (double)clock()/CLOCKS_PER_SEC #define debug(x) std::cout << #x << ": " << x << '\n'; #include "Annalib.h" int sh1[100]; mt19937 rnd1(2007); void Anna( int N, long long X, int K, int P[] ){ for (int i = 0; i < 100; ++i) sh1[i] = rnd1()%3; /* for (int i = 0; i < 10; ++i) cout << up1[i]; cout << endl; */ vector <int> tri; while (X) { tri.app(X%3); X /= 3; } reverse(all(tri)); vector <bool> used(N); for (int i = 0; i < K; ++i) used[P[i]] = 1; /* cout << "tri : "; for (auto e : tri) cout << e << ' '; cout << endl; */ int tryed = 0; int i = 0, ptr = 0; while (i + 1 < N) { auto check = [&]() { if (ptr == tri.size()) return false; int x = tri[ptr]+1; x += sh1[ptr]; if (x > 3) x -= 3; bool ans = (!used[i] || !(x&1)) && (!used[i+1] || !((x >> 1) & 1)); if ((!used[i] || !used[i+1]) && !ans) ++tryed; return (!used[i] || !(x&1)) && (!used[i+1] || !((x >> 1) & 1)); }; if (check()) { int x = tri[ptr]+1; x += sh1[ptr]; if (x > 3) x -= 3; ++ptr; Set(i, x & 1); Set(i + 1, (x >> 1) & 1); } else { Set(i, 0); Set(i + 1, 0); } i += 2; } if (ptr < tri.size() && tryed < 38) { exit(1); } }
#include<bits/stdc++.h> using namespace std; #define ii pair <int, int> #define app push_back #define all(a) a.begin(), a.end() #define bp __builtin_popcountll #define ll long long #define mp make_pair #define f first #define s second #define Time (double)clock()/CLOCKS_PER_SEC #define debug(x) std::cout << #x << ": " << x << '\n'; #include "Brunolib.h" int sh2[100]; mt19937 rnd2(2007); long long Bruno( int N, int A[] ){ for (int i = 0; i < 100; ++i) sh2[i] = rnd2()%3; /* for (int i = 0; i < 10; ++i) cout << up2[i]; cout << endl; */ ll ans = 0; int ptr = 0; for (int i = 0; i < N; i += 2) { int add = A[i] + (A[i+1]<<1); if (add) { add -= sh2[ptr]; if (add < 1) add += 3; ++ptr; --add; ans = ans * 3 + add; } } return ans; }

Compilation message (stderr)

Anna.cpp: In lambda function:
Anna.cpp:54:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (ptr == tri.size())
                 ~~~~^~~~~~~~~~~~~
Anna.cpp: In function 'void Anna(int, long long int, int, int*)':
Anna.cpp:85:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (ptr < tri.size() && tryed < 38) {
         ~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...