# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
243121 | osaaateiasavtnl | Broken Device (JOI17_broken_device) | C++14 | 62 ms | 3312 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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[200];
mt19937 rnd1(2007);
void Anna( int N, long long X, int K, int P[] ){
for (int i = 0; i < 200; ++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;
int em = 0;
while (i + 1 < N) {
auto check = [&]() {
if (ptr == tri.size())
return false;
int x = tri[ptr]+1;
x += sh1[i];
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 (!used[i] && !used[i+1])
++em;
if (check()) {
int x = tri[ptr]+1;
x += sh1[i];
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()) {
/*
cout << "tri : " << tri.size() << endl;
debug(em);
for (int i = 0; i < tri.size(); ++i) {
int x = tri[i]+1;
x += sh1[i];
if (x > 3)
x -= 3;
cout << x << ' ';
}
cout << endl;
ptr = 0;
i = 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) {
cout << "tryed " << i << ' ' << x << endl;
}
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;
}
else {
}
i += 2;
}
exit(0);
*/
while (1)
cout << "find" << endl;
exit(0);
}
}
#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[200];
mt19937 rnd2(2007);
long long Bruno( int N, int A[] ){
for (int i = 0; i < 200; ++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[i];
if (add < 1)
add += 3;
++ptr;
--add;
ans = ans * 3 + add;
}
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |