Untitled

mail@pastecode.io avatarunknown
plain_text
2 months ago
1.1 kB
2
Indexable
Never
#include<set>;
using namespace std;

set<pair<int,int>> line[101];
bool vis[101];
void init()
{
	for(int i=1;i<=100;i++)
		{
			line[i].clear();
			vis[i]=0;
	    }
}

void add(int mX, int mY)
{
	line[mX].insert(make_pair(mY,mX+1));
	line[mX+1].insert(make_pair(mY,mX));
}

void remove(int mX, int mY)
{
	line[mX].erase(make_pair(mY,mX+1));
	line[mX+1].erase(make_pair(mY,mX));
}

int numberOfCross(int mID)
{
	if(line[mID].empty())
		return 0;
	int cnt=1;
	int temp1 = line[mID].begin()->first;
	int temp2 = line[mID].begin()->second;
	auto it = line[temp2].upper_bound(make_pair(temp1,temp2));
	while(it!=line[temp2].end())
	{
		    cnt++;   
			it = line[it->second].upper_bound(make_pair(it->first,it->second));
			temp2=it->second;
	}
	return cnt;
}

int participant(int mX, int mY)
{
	 int r = mY;
    int c = mX;
	auto it = line[c].lower_bound(make_pair(r,-1));

    while (it != line[c].begin() && line[c].empty() == false)
    {
        it--;
        c = it->second;
        r = it->first;
		it = line[c].lower_bound(make_pair(r,-1));
    }

    return c;



	return 0;
}