답안 #308000

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
308000 2020-09-29T17:50:43 Z kimjg1119 Data Transfer (IOI19_transfer) C++17
48 / 100
9 ms 1276 KB
#include "transfer.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> get_attachment_sub1(vector<int> sc) {
	int a[10] = {};
	for (int i = 0; i < sc.size(); i++) {
		for (int j = 0; j < 6; j++)
			if(sc[i]) a[j] ^= (i + 1) & (1 << j);
	}
	vector<int> r;
	for (int i = 0; i < 6; i++)
		if (a[i]) r.push_back(1);
		else r.push_back(0);
	
	vector<int> at;
	for (int i = 0; i < 2; i++) {
		for (int j = 0; j < 6; j++)
			at.push_back(r[j]);
	}
	return at;
}

std::vector<int> get_attachment(std::vector<int> source) {
	if (source.size() == 63) return get_attachment_sub1(source);
}

vector<int> retrieve_sub1(vector<int> d) {
	vector<int> t, t1, t2;
	for (int i = 63; i < d.size(); i++) t.push_back(d[i]);
	for (int i = 0; i < 12; i++) d.pop_back();
	for (int i = 0; i < 6; i++) t1.push_back(t[i]);
	for (int i = 0; i < 6; i++) t2.push_back(t[i + 6]);

	bool flag = true;
	for (int i = 0; i < 6; i++)
		if (t1[i] != t2[i]) flag = false;
	if (flag) {
		int a[10] = {};
		for (int i = 0; i < d.size(); i++) {
			for (int j = 0; j < 6; j++)
				if (d[i]) a[j] ^= (i+1) & (1 << j);
		}
		int r = 0;
		for (int i = 0; i < 6; i++) a[i] ^= t1[i] * (1<<i);
		for (int i = 0; i < 6; i++)
			if (a[i]) r |= (1 << i);
		if (r > 0) d[r - 1] = 1 - d[r - 1];
		return d;
	}
	else return d;
}

std::vector<int> retrieve(std::vector<int> data) {
	if (data.size() < 255) return retrieve_sub1(data);
}

Compilation message

transfer.cpp: In function 'std::vector<int> get_attachment_sub1(std::vector<int>)':
transfer.cpp:8:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 |  for (int i = 0; i < sc.size(); i++) {
      |                  ~~^~~~~~~~~~~
transfer.cpp: In function 'std::vector<int> retrieve_sub1(std::vector<int>)':
transfer.cpp:31:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |  for (int i = 63; i < d.size(); i++) t.push_back(d[i]);
      |                   ~~^~~~~~~~~~
transfer.cpp:41:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |   for (int i = 0; i < d.size(); i++) {
      |                   ~~^~~~~~~~~~
transfer.cpp: In function 'std::vector<int> get_attachment(std::vector<int>)':
transfer.cpp:27:1: warning: control reaches end of non-void function [-Wreturn-type]
   27 | }
      | ^
transfer.cpp: In function 'std::vector<int> retrieve(std::vector<int>)':
transfer.cpp:57:1: warning: control reaches end of non-void function [-Wreturn-type]
   57 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Partially correct 9 ms 1276 KB Partially correct
2 Partially correct 9 ms 1036 KB Partially correct
3 Partially correct 9 ms 1208 KB Partially correct
4 Partially correct 9 ms 1140 KB Partially correct
5 Partially correct 9 ms 1036 KB Partially correct
6 Partially correct 9 ms 1036 KB Partially correct
7 Partially correct 9 ms 1036 KB Partially correct
8 Partially correct 9 ms 1164 KB Partially correct
9 Partially correct 8 ms 1152 KB Partially correct
10 Partially correct 9 ms 976 KB Partially correct
11 Partially correct 8 ms 908 KB Partially correct
12 Partially correct 9 ms 908 KB Partially correct
13 Partially correct 9 ms 1148 KB Partially correct
14 Partially correct 9 ms 1036 KB Partially correct
15 Partially correct 9 ms 1028 KB Partially correct
16 Partially correct 9 ms 1144 KB Partially correct
17 Partially correct 8 ms 1036 KB Partially correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 1252 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -