답안 #231581

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
231581 2020-05-14T04:18:35 Z syy Broken Device (JOI17_broken_device) C++17
100 / 100
52 ms 3072 KB
#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;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 50 ms 3056 KB Output is correct - L* = 40
2 Correct 49 ms 3072 KB Output is correct - L* = 40
3 Correct 49 ms 3072 KB Output is correct - L* = 40
4 Correct 52 ms 3072 KB Output is correct - L* = 40
5 Correct 49 ms 3072 KB Output is correct - L* = 40
6 Correct 49 ms 3056 KB Output is correct - L* = 40
7 Correct 50 ms 3072 KB Output is correct - L* = 40
8 Correct 49 ms 3072 KB Output is correct - L* = 40
9 Correct 49 ms 3072 KB Output is correct - L* = 40
10 Correct 50 ms 3056 KB Output is correct - L* = 40
11 Correct 51 ms 3056 KB Output is correct - L* = 40
12 Correct 51 ms 3056 KB Output is correct - L* = 40
13 Correct 50 ms 3072 KB Output is correct - L* = 40
14 Correct 49 ms 3056 KB Output is correct - L* = 40
15 Correct 49 ms 3072 KB Output is correct - L* = 40
16 Correct 50 ms 3056 KB Output is correct - L* = 40
17 Correct 52 ms 3072 KB Output is correct - L* = 40
18 Correct 51 ms 3072 KB Output is correct - L* = 40
19 Correct 49 ms 3072 KB Output is correct - L* = 40
20 Correct 50 ms 3072 KB Output is correct - L* = 40
21 Correct 50 ms 3072 KB Output is correct - L* = 40
22 Correct 50 ms 3072 KB Output is correct - L* = 40
23 Correct 49 ms 3072 KB Output is correct - L* = 40
24 Correct 51 ms 3056 KB Output is correct - L* = 40
25 Correct 51 ms 3056 KB Output is correct - L* = 40
26 Correct 49 ms 3072 KB Output is correct - L* = 40
27 Correct 50 ms 3056 KB Output is correct - L* = 40
28 Correct 50 ms 3072 KB Output is correct - L* = 40
29 Correct 49 ms 3072 KB Output is correct - L* = 40
30 Correct 49 ms 3072 KB Output is correct - L* = 40
31 Correct 50 ms 3056 KB Output is correct - L* = 40
32 Correct 50 ms 3072 KB Output is correct - L* = 40
33 Correct 49 ms 3072 KB Output is correct - L* = 40
34 Correct 50 ms 3072 KB Output is correct - L* = 40
35 Correct 49 ms 3072 KB Output is correct - L* = 40
36 Correct 51 ms 3072 KB Output is correct - L* = 40
37 Correct 50 ms 3072 KB Output is correct - L* = 40
38 Correct 49 ms 3072 KB Output is correct - L* = 40
39 Correct 52 ms 3072 KB Output is correct - L* = 40
40 Correct 50 ms 3056 KB Output is correct - L* = 40