답안 #911186

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
911186 2024-01-18T15:00:17 Z kachu Coreputer (IOI23_coreputer) C++17
100 / 100
1 ms 596 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include "coreputer.h"
 
using namespace std;
using namespace __gnu_pbds;
 
#define oset tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> 
#define ofind find_by_order
#define okey order_of_key
 
#define pque priority_queue
#define dque deque
#define que queue
#define umap unordered_map
#define uset unordered_set
#define pipii pair<int, pair<int,int>>
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define ppb pop_back
#define pf push_front
#define ppf pop_front
#define iter iterator
#define endl '\n'
#define MOD 1000000007
#define INF 1e18
 
vector<int> malfunctioning_cores(int N){
	if (N == 1)
		return {1};
 
	vector<int> ans;
	for (int i = 0; i < N; i++)
		ans.pb(0);
	
	int low = 0, high = N - 1, pivot;
	int res[N];
	
	
	while (low <= high){
		int mid = (low + high) / 2;
		
		vector<int> query;
		for (int i = 0; i <= mid; i++)
			query.pb(i);
			
		if (mid == N - 1){
			res[mid] = 1;
		}
		else{
			res[mid] = run_diagnostic(query);
		}
		
		if (res[mid] == 0 || res[mid] == 1)
			high = mid - 1;
		else
			low = mid + 1;
	}
	
	pivot = low;
	ans[pivot] = 1;
	
	if (pivot == N - 1)
		return ans;
	
	if (res[pivot] == 0){
		for (int i = 0; i < pivot; i++){
			vector<int> query;
			query.pb(i);
			for (int j = pivot + 1; j < N; j++)
				query.pb(j);
			
			int re = run_diagnostic(query);
			
			if (re == 1)
				ans[i] = 1;
		}
		
		int cnt1 = 0;
		for (int i = 0; i <= pivot; i++)
			cnt1 += ans[i];
			
		for (int i = pivot + 1; i < N - 1; i++){
			vector<int> query;
			for (int j = 0; j <= pivot; j++)
				query.pb(j);
			query.pb(i);
			
			int re = run_diagnostic(query);
			
			if (re == 1)
				ans[i] = 1;
		}
		
		int cnt2 = 0;
		for (int i = pivot + 1; i < N - 1; i++)
			cnt2 += ans[i];
		
		
		if (pivot != N - 1)
			ans[N - 1] = (cnt1 - cnt2);
	}
	else{
		for (int i = 0; i < pivot; i++){
			vector<int> query;
			query.pb(i);
			for (int j = pivot + 1; j < N; j++)
				query.pb(j);
			
			int re = run_diagnostic(query);
			
			if (re == 1)
				ans[i] = 1;
		}
		
		int cnt1 = 0;
		for (int i = 0; i <= pivot; i++)
			cnt1 += ans[i];
			
		for (int i = pivot + 1; i < N - 1; i++){
			vector<int> query;
			for (int j = 0; j < pivot; j++)
				query.pb(j);
			query.pb(i);
			
			int re = run_diagnostic(query);
			
			if (re == 1)
				ans[i] = 1;
		}
		
		int cnt2 = 0;
		for (int i = pivot + 1; i < N - 1; i++)
			cnt2 += ans[i];
		
		if (pivot != N - 1)
			ans[N - 1] = (cnt1 - cnt2 - 1);
	}
 
	return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
7 Correct 1 ms 344 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 1 ms 344 KB Output is correct
11 Correct 0 ms 596 KB Output is correct
12 Correct 0 ms 344 KB Output is correct
13 Correct 0 ms 344 KB Output is correct
14 Correct 1 ms 344 KB Output is correct
15 Correct 1 ms 344 KB Output is correct
16 Correct 0 ms 344 KB Output is correct
17 Correct 0 ms 344 KB Output is correct
18 Correct 0 ms 344 KB Output is correct
19 Correct 1 ms 344 KB Output is correct
20 Correct 1 ms 344 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 1 ms 344 KB Output is correct
23 Correct 1 ms 344 KB Output is correct
24 Correct 1 ms 344 KB Output is correct
25 Correct 1 ms 344 KB Output is correct
26 Correct 0 ms 344 KB Output is correct
27 Correct 1 ms 344 KB Output is correct
28 Correct 1 ms 344 KB Output is correct
29 Correct 1 ms 344 KB Output is correct
30 Correct 0 ms 344 KB Output is correct
31 Correct 1 ms 344 KB Output is correct
32 Correct 0 ms 344 KB Output is correct
33 Correct 1 ms 344 KB Output is correct
34 Correct 1 ms 344 KB Output is correct
35 Correct 0 ms 344 KB Output is correct
36 Correct 1 ms 344 KB Output is correct
37 Correct 1 ms 344 KB Output is correct
38 Correct 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 1 ms 344 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
10 Correct 1 ms 344 KB Output is correct
11 Correct 0 ms 344 KB Output is correct
12 Correct 0 ms 344 KB Output is correct
13 Correct 1 ms 344 KB Output is correct
14 Correct 0 ms 596 KB Output is correct
15 Correct 0 ms 344 KB Output is correct
16 Correct 0 ms 344 KB Output is correct
17 Correct 1 ms 344 KB Output is correct
18 Correct 1 ms 344 KB Output is correct
19 Correct 0 ms 344 KB Output is correct
20 Correct 0 ms 344 KB Output is correct
21 Correct 0 ms 344 KB Output is correct
22 Correct 1 ms 344 KB Output is correct
23 Correct 1 ms 344 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 1 ms 344 KB Output is correct
26 Correct 1 ms 344 KB Output is correct
27 Correct 1 ms 344 KB Output is correct
28 Correct 1 ms 344 KB Output is correct
29 Correct 0 ms 344 KB Output is correct
30 Correct 1 ms 344 KB Output is correct
31 Correct 1 ms 344 KB Output is correct
32 Correct 1 ms 344 KB Output is correct
33 Correct 0 ms 344 KB Output is correct
34 Correct 1 ms 344 KB Output is correct
35 Correct 0 ms 344 KB Output is correct
36 Correct 1 ms 344 KB Output is correct
37 Correct 1 ms 344 KB Output is correct
38 Correct 0 ms 344 KB Output is correct
39 Correct 1 ms 344 KB Output is correct
40 Correct 1 ms 344 KB Output is correct
41 Correct 0 ms 344 KB Output is correct
42 Correct 1 ms 344 KB Output is correct
43 Correct 0 ms 344 KB Output is correct
44 Correct 0 ms 344 KB Output is correct
45 Correct 1 ms 344 KB Output is correct
46 Correct 0 ms 344 KB Output is correct
47 Correct 1 ms 344 KB Output is correct
48 Correct 0 ms 344 KB Output is correct
49 Correct 0 ms 344 KB Output is correct
50 Correct 1 ms 344 KB Output is correct
51 Correct 0 ms 344 KB Output is correct
52 Correct 1 ms 344 KB Output is correct
53 Correct 0 ms 344 KB Output is correct
54 Correct 0 ms 348 KB Output is correct
55 Correct 0 ms 344 KB Output is correct
56 Correct 1 ms 344 KB Output is correct
57 Correct 1 ms 344 KB Output is correct
58 Correct 1 ms 344 KB Output is correct
59 Correct 1 ms 344 KB Output is correct
60 Correct 0 ms 344 KB Output is correct
61 Correct 0 ms 344 KB Output is correct
62 Correct 0 ms 352 KB Output is correct
63 Correct 1 ms 344 KB Output is correct
64 Correct 1 ms 344 KB Output is correct
65 Correct 0 ms 344 KB Output is correct
66 Correct 0 ms 344 KB Output is correct
67 Correct 1 ms 344 KB Output is correct
68 Correct 0 ms 344 KB Output is correct
69 Correct 0 ms 344 KB Output is correct
70 Correct 0 ms 344 KB Output is correct
71 Correct 1 ms 344 KB Output is correct
72 Correct 0 ms 344 KB Output is correct
73 Correct 1 ms 344 KB Output is correct
74 Correct 1 ms 344 KB Output is correct
75 Correct 0 ms 344 KB Output is correct
76 Correct 0 ms 344 KB Output is correct
77 Correct 0 ms 344 KB Output is correct
78 Correct 1 ms 344 KB Output is correct
79 Correct 0 ms 344 KB Output is correct
80 Correct 1 ms 344 KB Output is correct
81 Correct 0 ms 344 KB Output is correct
82 Correct 0 ms 344 KB Output is correct