1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
//10.12.20 23:05 start
#include <iostream>
#include <vector>
using namespace std;

class patata
{
public:
int start;
int time;
int num_of_col = 0;
patata(int start, int time){
	this->start = start;
	this->time = time;
	}//data
};


void check_if_collide(patata &a, patata &b)
{
static int time_first;
static int time_second;
time_first = a.time + b.start;
time_second = b.time + a.start;
if(time_first == time_second){
	++a.num_of_col;
	++b.num_of_col;
	//cout<<"kolizja!\n";
	}//if
return;
}//check if collide

int main()
{
vector<patata> tab1;
vector<patata> tab2;
int g_type;
int g_ind;
int num_of_col = 0;
int score = 0;

int i,j;	
int n;
cin>>n;
int start;
int type;
int time;

for(i=0;i<n;++i){
	cin>>type;
	cin>>start;
	cin>>time;
	if(type == 1) tab1.push_back(patata(start,time));
	else tab2.push_back(patata(start,time));
	}//for
	
while(true){
	num_of_col = 0;
	for(i=0;i<tab1.size();++i){
		for(j=0;j<tab2.size();++j){
			check_if_collide(tab1[i],tab2[j]);
			}//for2
		}//for
		
	for(i=0;i<tab1.size();++i) {
		if(tab1[i].num_of_col > num_of_col){
			num_of_col = tab1[i].num_of_col;
			g_type = 1;
			g_ind = i;
			}//if
		}//for
		
	for(i=0;i<tab2.size();++i) {
		if(tab2[i].num_of_col > num_of_col){
			num_of_col = tab2[i].num_of_col;
			g_type = 2;
			g_ind = i;
			}//if
		}//for
	if(!num_of_col) break;
	++score;
	//cout<<"Usuwamy typ o danych "<<g_type<<endl;
	if(g_type == 1) tab1.erase(tab1.begin() + g_ind);
	else tab2.erase(tab2.begin() + g_ind);
	for(i=0;i<tab1.size();++i) tab1[i].num_of_col = 0;
	for(i=0;i<tab2.size();++i) tab2[i].num_of_col = 0;
	//cout<<"koniec lajla\n";
	}//while
cout<<score;	
return 0;	
}