Untitled
unknown
plain_text
2 years ago
1.1 kB
11
Indexable
#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;
}Editor is loading...