1006 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			1006 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| #ifndef _UNION2_H_
 | |
| #define _UNION2_H_
 | |
| 
 | |
| int unir(int *res, int rows, int tipo, int **ret, int final);
 | |
| 
 | |
| typedef struct n2
 | |
| {
 | |
| 	int v[2];
 | |
| }s2;
 | |
| 
 | |
| typedef struct n3
 | |
| {
 | |
| 	int v[3];
 | |
| }s3;
 | |
| 
 | |
| typedef struct n4
 | |
| {
 | |
| 	int v[4];
 | |
| }s4;
 | |
| 
 | |
| typedef struct n5
 | |
| {
 | |
| 	int v[5];
 | |
| }s5;
 | |
| 
 | |
| typedef struct n6
 | |
| {
 | |
| 	int v[6];
 | |
| }s6;
 | |
| 
 | |
| typedef struct n7
 | |
| {
 | |
| 	int v[7];
 | |
| }s7;
 | |
| 
 | |
| typedef struct n8
 | |
| {
 | |
| 	int v[8];
 | |
| }s8;
 | |
| 
 | |
| typedef struct n9
 | |
| {
 | |
| 	int v[9];
 | |
| }s9;
 | |
| 
 | |
| typedef struct n10
 | |
| {
 | |
| 	int v[10];
 | |
| }s10;
 | |
| 
 | |
| typedef struct n11
 | |
| {
 | |
| 	int v[11];
 | |
| }s11;
 | |
| 
 | |
| typedef struct n12
 | |
| {
 | |
| 	int v[12];
 | |
| }s12;
 | |
| 
 | |
| typedef struct n13
 | |
| {
 | |
| 	int v[13];
 | |
| }s13;
 | |
| 
 | |
| typedef struct n14
 | |
| {
 | |
| 	int v[14];
 | |
| }s14;
 | |
| 
 | |
| typedef struct n15
 | |
| {
 | |
| 	int v[15];
 | |
| }s15;
 | |
| 
 | |
| typedef struct n16
 | |
| {
 | |
| 	int v[16];
 | |
| }s16;
 | |
| 
 | |
| typedef struct n17
 | |
| {
 | |
| 	int v[17];
 | |
| }s17;
 | |
| 
 | |
| typedef struct n18
 | |
| {
 | |
| 	int v[18];
 | |
| }s18;
 | |
| 
 | |
| typedef struct n19
 | |
| {
 | |
| 	int v[19];
 | |
| }s19;
 | |
| 
 | |
| typedef struct n20
 | |
| {
 | |
| 	int v[20];
 | |
| }s20;
 | |
| 
 | |
| struct q1
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const int &r1, const int &r2)
 | |
| 	{
 | |
| 		if(r1 != r2)
 | |
| 			return true;
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p2
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s2 &r1, const s2 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 2; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q2
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s2 &r1, const s2 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 2; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o2
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s2 &r1, const s2 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 2; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p3
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s3 &r1, const s3 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 3; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q3
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s3 &r1, const s3 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 3; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o3
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s3 &r1, const s3 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 3; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p4
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s4 &r1, const s4 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 4; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q4
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s4 &r1, const s4 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 4; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o4
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s4 &r1, const s4 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 4; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p5
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s5 &r1, const s5 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 5; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q5
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s5 &r1, const s5 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 5; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o5
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s5 &r1, const s5 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 5; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p6
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s6 &r1, const s6 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 6; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q6
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s6 &r1, const s6 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 6; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o6
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s6 &r1, const s6 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 6; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p7
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s7 &r1, const s7 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 7; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q7
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s7 &r1, const s7 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 7; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o7
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s7 &r1, const s7 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 7; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p8
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s8 &r1, const s8 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 8; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q8
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s8 &r1, const s8 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 8; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o8
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s8 &r1, const s8 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 8; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p9
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s9 &r1, const s9 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 9; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q9
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s9 &r1, const s9 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 9; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o9
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s9 &r1, const s9 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 9; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p10
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s10 &r1, const s10 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 10; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q10
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s10 &r1, const s10 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 10; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o10
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s10 &r1, const s10 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 10; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p11
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s11 &r1, const s11 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 11; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q11
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s11 &r1, const s11 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 11; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o11
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s11 &r1, const s11 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 11; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p12
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s12 &r1, const s12 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 12; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q12
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s12 &r1, const s12 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 12; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o12
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s12 &r1, const s12 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 12; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p13
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s13 &r1, const s13 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 13; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q13
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s13 &r1, const s13 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 13; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o13
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s13 &r1, const s13 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 13; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p14
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s14 &r1, const s14 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 14; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q14
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s14 &r1, const s14 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 14; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o14
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s14 &r1, const s14 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 14; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p15
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s15 &r1, const s15 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 15; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q15
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s15 &r1, const s15 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 15; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o15
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s15 &r1, const s15 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 15; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p16
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s16 &r1, const s16 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 16; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q16
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s16 &r1, const s16 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 16; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o16
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s16 &r1, const s16 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 16; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p17
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s17 &r1, const s17 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 17; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q17
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s17 &r1, const s17 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 17; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o17
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s17 &r1, const s17 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 17; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p18
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s18 &r1, const s18 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 18; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q18
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s18 &r1, const s18 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 18; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o18
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s18 &r1, const s18 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 18; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p19
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s19 &r1, const s19 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 19; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q19
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s19 &r1, const s19 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 19; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o19
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s19 &r1, const s19 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 19; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct p20
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s20 &r1, const s20 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 20; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return true;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct q20
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s20 &r1, const s20 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 20; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] != r2.v[x])
 | |
| 				return true;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| struct o20
 | |
| {
 | |
| 	__host__ __device__
 | |
| 	bool operator()(const s20 &r1, const s20 &r2)
 | |
| 	{
 | |
| 		int x;
 | |
| 		for(x = 0; x < 20; x++)
 | |
| 		{
 | |
| 			if(r1.v[x] > r2.v[x])
 | |
| 				return true;
 | |
| 			if(r1.v[x] < r2.v[x])
 | |
| 				return false;
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| #endif
 |