55452023-07-19 20:58:28AndrosXorzótáblacpp17Időlimit túllépés 28/1002.099s6736 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
#include <functional> //functionalban van a bitwise xor

#define maxN 100001

using namespace std;

int a[maxN];
int b[maxN];

//Note: c++-ban `a` xor `b` = a^b;
int main()
{
	int n, m;
	cin >> n >> m;
	for (int i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	for (int i = 0; i < m; i++)
	{
		cin >> b[i];
	}


	bool gyors_e = true;//+14 pont, ha n=m es A_i=B_i reszfeladat
	if (n != m) { gyors_e = false; }//Ha n!=m nem el a reszfeladat
	else{
		for (int i = 0; i < n&&gyors_e; i++)
		{
			if (a[i] != b[i])gyors_e = false;//Ha nem egyenloek, akkor nem szimmetrikus, nem el a reszfeladat
		}
	}
	if (gyors_e) {
		//Ilyenkor a ket sorozat ugyan az
		//A tablazat az x tengelyen szimmetrikus
		//ha egy ertekbe bele xoroljuk az egyik szamot ketszer, akkor olyan, mintha nem xoroltuk volna bele
		//ezert eleg csak az atlot osszexorolni
		int base = 0;
		for (int i = 0; i < n; i++)
		{
			//Az atlon x+x=2*x
			base ^= (a[i] * 2);
		}
		cout << base;
		return 0;
	}


	int temp = 0;
	//Roll unwrapping? Valszeg nem segit, az n^2-et kene kioptimalizalni
	vector<int> col(m);
	int temp_a;
	for (int i = 0; i < n; i++)
	{
		temp_a = a[i];
		for (int j = 0; j < m; j++)
		{
			col[j] = temp_a + b[j];//kiszamolom egy oszlopban az osszes osszeget
		}
		//Aztan osszexorolom az egesz oszlopot, a temp kezdoertekkel
		//accumulate altalaban osszeadasra jo, de meg lehet adni furan sajat moveletet is
		//az xor sorrendje felcserelheto, szoval mukodik, bar nem tudom hogyan mukodik az accumulate belul
		//De mindent amit az osszeadas tud, tud az xor is, szoval csak menni fog
		temp = accumulate(col.begin(), col.end(), temp, bit_xor<void>());
	}
	cout << temp;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1696 KiB
2Időlimit túllépés2.099s2164 KiB
subtask214/14
3Elfogadva3ms2088 KiB
4Elfogadva3ms2176 KiB
5Elfogadva3ms2300 KiB
6Elfogadva3ms2508 KiB
7Elfogadva4ms2740 KiB
8Elfogadva4ms2832 KiB
9Elfogadva4ms3048 KiB
subtask314/14
10Elfogadva3ms3172 KiB
11Elfogadva71ms4788 KiB
12Elfogadva79ms4848 KiB
13Elfogadva89ms4992 KiB
14Elfogadva89ms5276 KiB
subtask40/14
15Időlimit túllépés2.056s3708 KiB
16Időlimit túllépés2.069s4168 KiB
17Időlimit túllépés2.069s4276 KiB
18Időlimit túllépés2.069s4592 KiB
19Időlimit túllépés2.065s4740 KiB
subtask50/21
20Elfogadva712ms4848 KiB
21Időlimit túllépés2.049s4664 KiB
22Időlimit túllépés2.078s4984 KiB
23Időlimit túllépés2.061s5484 KiB
24Időlimit túllépés2.058s5600 KiB
25Elfogadva48ms6592 KiB
subtask60/37
26Elfogadva181ms5400 KiB
27Időlimit túllépés2.061s5176 KiB
28Időlimit túllépés2.052s5236 KiB
29Időlimit túllépés2.078s5356 KiB
30Időlimit túllépés2.058s5616 KiB
31Időlimit túllépés2.069s5660 KiB
32Elfogadva90ms6736 KiB
33Időlimit túllépés2.056s5528 KiB
34Időlimit túllépés2.065s5524 KiB