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
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
#include<bits/stdc++.h>
using namespace std;

int main ()
{
	int n, i, p=0, g=0, r, usun=0, odl, wys, j, maks=0,  wypadlacz=0;
	cin>>n;				
	int P[n][2], G[n][2];

	for (i=0; i<n; i++)
	{
		
		cin>>r;
		if (r==1)
		{
			cin>>G[g][0]>> G[g][1];
			if (G[g][0]> maks)
				maks=G[g][0];
			g++;
		}
		
		else
		{
			cin>>P[p][0]>> P[p][1];
				if (P[p][0]> maks)
					maks=P[p][0];	
			p++;	
		} 
	}
	int PW[maks+1], GW[maks+1];
	
	for (i=0; i<maks+1; i++)
	{
		GW[i]=0;
	}
	
	for (i=0; i<maks+1; i++)
	{
		PW[i]=0;
	}
	

		
	for (i=0; i<g; i++)
	{
		wys=0;
	
		for (j=0; j<p; j++)
		{
			odl=0;
			
			if (G[i][1]<P[j][1])
			{
				wys+=P[j][1];
			}
			
			if (G[i][1]>P[j][1])
			{
				odl+=G[i][1];
			}
			
			while (odl!=G[i][0])			
			{
				wys++;
				odl++;
			}
			
			if (wys==P[j][0])		
			{
			 	GW[G[i][0]]++;
				PW[P[j][0]]++;	
				wypadlacz++;
			}
			
		}		
	}
	
	for (i=0; i<maks+1; i++)
	{
		if (GW[i]>1)
		{
			usun++;
			wypadlacz=-GW[i];
		}
		
	}

	for (i=0; i<maks+1; i++)
	{
		if (PW[i]>1)
		{
			usun++;
			wypadlacz-=PW[i];
		}
	}
	
	usun+=wypadlacz;
		cout<<usun;
	
	
	return 0;	
}