5545 2023. 07. 19 20:58:28 Andros Xorzótábla cpp17 Időlimit túllépés 28/100 2.099s 6736 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 Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1696 KiB
2 Időlimit túllépés 2.099s 2164 KiB
subtask2 14/14
3 Elfogadva 3ms 2088 KiB
4 Elfogadva 3ms 2176 KiB
5 Elfogadva 3ms 2300 KiB
6 Elfogadva 3ms 2508 KiB
7 Elfogadva 4ms 2740 KiB
8 Elfogadva 4ms 2832 KiB
9 Elfogadva 4ms 3048 KiB
subtask3 14/14
10 Elfogadva 3ms 3172 KiB
11 Elfogadva 71ms 4788 KiB
12 Elfogadva 79ms 4848 KiB
13 Elfogadva 89ms 4992 KiB
14 Elfogadva 89ms 5276 KiB
subtask4 0/14
15 Időlimit túllépés 2.056s 3708 KiB
16 Időlimit túllépés 2.069s 4168 KiB
17 Időlimit túllépés 2.069s 4276 KiB
18 Időlimit túllépés 2.069s 4592 KiB
19 Időlimit túllépés 2.065s 4740 KiB
subtask5 0/21
20 Elfogadva 712ms 4848 KiB
21 Időlimit túllépés 2.049s 4664 KiB
22 Időlimit túllépés 2.078s 4984 KiB
23 Időlimit túllépés 2.061s 5484 KiB
24 Időlimit túllépés 2.058s 5600 KiB
25 Elfogadva 48ms 6592 KiB
subtask6 0/37
26 Elfogadva 181ms 5400 KiB
27 Időlimit túllépés 2.061s 5176 KiB
28 Időlimit túllépés 2.052s 5236 KiB
29 Időlimit túllépés 2.078s 5356 KiB
30 Időlimit túllépés 2.058s 5616 KiB
31 Időlimit túllépés 2.069s 5660 KiB
32 Elfogadva 90ms 6736 KiB
33 Időlimit túllépés 2.056s 5528 KiB
34 Időlimit túllépés 2.065s 5524 KiB