Submission #556445

# Submission time Handle Problem Language Result Execution time Memory
556445 2022-05-03T07:26:09 Z blue Broken Device (JOI17_broken_device) C++17
85 / 100
44 ms 2444 KB
#include "Annalib.h"
#include <vector>
#include <iostream>
#include <string>
using namespace std;

namespace
{
	using vi = vector<int>;
	using ll = long long;
	#define sz(x) int(x.size())

	vector<string> key{"", "0", "1", "00", "10", "11", "0", "01"};
}

void Anna(int N, ll X, int K, int P[])
{
	string bs(60, '0');
	for(int b = 0; b < 60; b++)
	{
		bs[b] = (X%2) + '0';
		X >>= 1;
	}


	vi br(N, 0); //broken

	for(int i = 0; i < K; i++)
		br[P[i]] = 1;

	int cb = 0;

	// cerr << "N = " << N << '\n';

	for(int i = 0; i < N; i += 3)
	{
		// cerr << "i = " << i << "\n";
		int cbr = br[i] + 2*br[i+1] + 4*br[i+2];
		
		for(int b2 : {3, 4, 5, 7, 1, 2, 6, 0})
		{
			bool valid = 1;

			// cerr << "cbr = " << cbr << ", cb = " << cb << '\n';
			// cerr << bs[cb] << ' ' << bs[cb+1] << '\n';


			for(int f = 0; f < sz(key[b2]); f++)
				if(key[b2][f] != bs[cb+f])
					valid = 0;

			if(!valid) continue;

			// cerr << "going for " << b2 << '\n';

			if((b2 & cbr) == 0)
			{
				cb += sz(key[b2]);
				for(int j = 0; j < 3; j++)
				{
					// cerr << "set : " << i+j << '\n';
					Set(i + j, (b2 >> j) & 1);
				}
				break;
			}
		}
	}
	// cerr << "terminated\n";
}
#include "Brunolib.h"
#include <vector>
#include <string>
using namespace std;

namespace
{
	using vi = vector<int>;
	using ll = long long;
	#define sz(x) int(x.size())

	vector<string> key{"", "0", "1", "00", "10", "11", "0", "01"};

}


ll Bruno(int N, int A[])
{
	string res_s;

	for(int i = 0; i < N; i += 3)
	{
		int z = A[i] + 2*A[i+1] + 4*A[i+2];
		res_s += key[z];
	}

	ll bs = 1;
	ll res = 0;

	for(int i = 0; i < 60; i++)
	{
		if(res_s[i] == '1')
			res += bs;
		bs *= 2;
	}

	return res;
}

# Verdict Execution time Memory Grader output
1 Correct 41 ms 2308 KB Output is correct - L* = 40
2 Correct 38 ms 2228 KB Output is correct - L* = 40
3 Partially correct 33 ms 2208 KB Output is partially correct - L* = 37
4 Correct 32 ms 2376 KB Output is correct - L* = 40
5 Correct 34 ms 2292 KB Output is correct - L* = 40
6 Correct 33 ms 2284 KB Output is correct - L* = 40
7 Correct 40 ms 2216 KB Output is correct - L* = 40
8 Partially correct 40 ms 2324 KB Output is partially correct - L* = 38
9 Correct 39 ms 2308 KB Output is correct - L* = 40
10 Correct 38 ms 2276 KB Output is correct - L* = 40
11 Correct 33 ms 2444 KB Output is correct - L* = 40
12 Correct 33 ms 2228 KB Output is correct - L* = 40
13 Correct 35 ms 2232 KB Output is correct - L* = 40
14 Correct 44 ms 2232 KB Output is correct - L* = 40
15 Correct 36 ms 2280 KB Output is correct - L* = 40
16 Correct 33 ms 2364 KB Output is correct - L* = 40
17 Correct 35 ms 2248 KB Output is correct - L* = 40
18 Correct 32 ms 2284 KB Output is correct - L* = 40
19 Correct 32 ms 2232 KB Output is correct - L* = 40
20 Correct 33 ms 2332 KB Output is correct - L* = 40
21 Correct 35 ms 2244 KB Output is correct - L* = 40
22 Correct 33 ms 2288 KB Output is correct - L* = 40
23 Correct 38 ms 2312 KB Output is correct - L* = 40
24 Correct 36 ms 2304 KB Output is correct - L* = 40
25 Correct 39 ms 2248 KB Output is correct - L* = 40
26 Correct 33 ms 2300 KB Output is correct - L* = 40
27 Correct 33 ms 2260 KB Output is correct - L* = 40
28 Correct 35 ms 2368 KB Output is correct - L* = 40
29 Correct 32 ms 2276 KB Output is correct - L* = 40
30 Correct 44 ms 2232 KB Output is correct - L* = 40
31 Partially correct 35 ms 2196 KB Output is partially correct - L* = 38
32 Correct 33 ms 2168 KB Output is correct - L* = 40
33 Correct 34 ms 2252 KB Output is correct - L* = 40
34 Correct 34 ms 2352 KB Output is correct - L* = 40
35 Partially correct 40 ms 2332 KB Output is partially correct - L* = 37
36 Partially correct 37 ms 2328 KB Output is partially correct - L* = 37
37 Correct 36 ms 2252 KB Output is correct - L* = 40
38 Correct 37 ms 2272 KB Output is correct - L* = 40
39 Correct 33 ms 2344 KB Output is correct - L* = 40
40 Correct 33 ms 2228 KB Output is correct - L* = 40