55452023-07-19 20:58:28AndrosXorzótáblacpp17Time limit exceeded 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;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1696 KiB
2Time limit exceeded2.099s2164 KiB
subtask214/14
3Accepted3ms2088 KiB
4Accepted3ms2176 KiB
5Accepted3ms2300 KiB
6Accepted3ms2508 KiB
7Accepted4ms2740 KiB
8Accepted4ms2832 KiB
9Accepted4ms3048 KiB
subtask314/14
10Accepted3ms3172 KiB
11Accepted71ms4788 KiB
12Accepted79ms4848 KiB
13Accepted89ms4992 KiB
14Accepted89ms5276 KiB
subtask40/14
15Time limit exceeded2.056s3708 KiB
16Time limit exceeded2.069s4168 KiB
17Time limit exceeded2.069s4276 KiB
18Time limit exceeded2.069s4592 KiB
19Time limit exceeded2.065s4740 KiB
subtask50/21
20Accepted712ms4848 KiB
21Time limit exceeded2.049s4664 KiB
22Time limit exceeded2.078s4984 KiB
23Time limit exceeded2.061s5484 KiB
24Time limit exceeded2.058s5600 KiB
25Accepted48ms6592 KiB
subtask60/37
26Accepted181ms5400 KiB
27Time limit exceeded2.061s5176 KiB
28Time limit exceeded2.052s5236 KiB
29Time limit exceeded2.078s5356 KiB
30Time limit exceeded2.058s5616 KiB
31Time limit exceeded2.069s5660 KiB
32Accepted90ms6736 KiB
33Time limit exceeded2.056s5528 KiB
34Time limit exceeded2.065s5524 KiB