# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
231581 | syy | Broken Device (JOI17_broken_device) | C++17 | 52 ms | 3072 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define FOR(i, a, b) for(ll i = (ll)a; i <= (ll)b; i++)
#define DEC(i, a, b) for(ll i = (ll)a; i >= (ll)b; i--)
typedef pair<ll, ll> pi;
#define f first
#define s second
typedef vector<ll> vi;
typedef vector<pi> vpi;
#define pb push_back
#define all(v) v.begin(), v.end()
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
bool res[155], no[155];
int num[55], x, val[65];
void up(ll x, ll a, ll b, ll c) {
res[3*x] = a;
res[3*x+1] = b;
res[3*x+2] = c;
}
void Anna(int n, long long X, int k, int p[]){
memset(res, 0, sizeof res); memset(no, 0, sizeof no);
memset(num, 0, sizeof num); memset(val, 0, sizeof val);
x = 0;
FOR(i, 0, 59) {
val[i] = X % 2;
X /= 2;
}
FOR(i, 0, k-1) {
no[p[i]] = 1;
num[p[i]/3]++;
}
FOR(i, 0, n/3-1) {
if (x >= 60) break;
if (num[i] == 0) {
ll t = 2*val[x] + val[x+1];
if (t == 0) up(i, 1, 0, 0);
else if (t == 1) up(i, 1, 0, 1);
else if (t == 2) up(i, 0, 1, 1);
else up(i, 1, 1, 1);
x += 2;
} else if (num[i] == 1) {
if (no[3*i]) {
if (val[x] == 0) up(i, 0, 1, 0);
else up(i, 0, 0, 1);
x++;
} else if (no[3*i+1]) {
if (val[x] == 1) { //1
up(i, 0, 0, 1);
x++;
} else if (val[x+1] == 0) { //00
up(i, 1, 0, 0);
x += 2;
} else if (val[x+1] == 1) { //01
up(i, 1, 0, 1);
x += 2;
}
} else {
if (val[x] == 0) up(i, 0, 1, 0);
else up(i, 1, 1, 0);
x++;
}
}
}
FOR(i, 0, n-1) Set(i, res[i]);
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define FOR(i, a, b) for(ll i = (ll)a; i <= (ll)b; i++)
#define DEC(i, a, b) for(ll i = (ll)a; i >= (ll)b; i--)
typedef pair<ll, ll> pi;
#define f first
#define s second
typedef vector<ll> vi;
typedef vector<pi> vpi;
#define pb push_back
#define all(v) v.begin(), v.end()
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
string ans;
ll v;
string tos[] = {"", "1", "0", "10", "00", "01", "1", "11"};
long long Bruno(int n, int arr[] ){
ans = ""; v = 0ll;
FOR(i, 0, n/3-1) {
int t = 4*arr[3*i] + 2*arr[3*i+1] + arr[3*i+2];
if (t == 0) continue;
ans += tos[t];
}
FOR(i, 0, ans.length()-1) {
if (ans[i] == '1') v += ((ll) (1ll<<i));
}
return v;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |