제출 #1363980

#제출 시각아이디문제언어결과실행 시간메모리
1363980nerrrminData Transfer (IOI19_transfer)C++20
0 / 100
0 ms580 KiB
#include "transfer.h"
#include<bits/stdc++.h>
#define pb push_back
using namespace std;

int get_xor(int bit, vector < int > v)
{
	int res = 0;
	for (int i = 0; i < v.size(); ++ i)
	{
		int has = ((1 << bit) & i);
		if(!has)res = (res ^ v[i]);
	} 
	return res;
}
/// 63 = 111111 => moga da gledam ako mi ostane 11111 kato obyrkano che sme vyv var 1 i nishto ne e obyrkano
/// pazq za vseki bit kakva e stoinostta
/// nte bita /// kte bita /// totala na vsichki dosega
/// var 1 - total e svyrkan 
/// var 2 - kte bita sa sbyrkani 
/// var 3 nte sa sbyrkani -> kte shte go fixnat (totala ne mi trqbva osobeno)
std::vector<int> get_attachment(std::vector<int> source) {
	int n, k;
	vector < int > v = source;
	std::vector<int> res = source;
	n = (int)source.size();
	//assert(n == 63);
	if(n == 63)k = 6;
	else k = 8;
	
	for (int bit = 0; bit < k; ++ bit)
	{
		int x = get_xor(bit, v);
		res.pb(x);
	}
	int total = 0;
	for (int i = n; i < res.size(); ++ i)
		total = (total ^ v[i]);
	res.pb(total);
	return res;
}

std::vector<int> retrieve(std::vector<int> data)
{
	int n, k;
	vector < int > ans;
	int sz = data.size();
	if(sz == 255 + 9)n = 255;
	else n = 63;
	//assert(sz == 63 + 7);
	int total = 0;
	for (int i = n; i < sz-1; ++ i)
	{
		ans.pb(data[i]);
		//total = (total ^ data[i]);
	}
	if(n == 255)k = 8;
	else k = 6;
	//
	
	int problem = 0, j = n;
	for (int bit = 0; bit < k; ++ bit)
	{
		int last = data[j];
		int curr = get_xor(bit, ans);
		if(last == curr)
		{
			problem += (1 << bit);
		}
		j ++;
	}
	if(problem == n)return ans;
	if(data.back() != total)return ans;
	ans[problem] = 1 - ans[problem];
	return ans;
}

컴파일 시 표준 에러 (stderr) 메시지

grader.cpp: In instantiation of 'void shuffle(std::vector<T>&) [with T = Scenario]':
grader.cpp:200:10:   required from here
grader.cpp:28:23: warning: 'void std::random_shuffle(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<Scenario*, vector<Scenario> >]' is deprecated: use 'std::shuffle' instead [-Wdeprecated-declarations]
   28 |         random_shuffle(v.begin(), v.end());
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from grader.cpp:8:
/usr/include/c++/13/bits/stl_algo.h:4581:5: note: declared here
 4581 |     random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
      |     ^~~~~~~~~~~~~~
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…