File tree Expand file tree Collapse file tree 1 file changed +13
-1
lines changed Expand file tree Collapse file tree 1 file changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -47,9 +47,20 @@ void solve(){
47
47
vector<int > timep (N,-1 );
48
48
int not_vis = N;
49
49
if (M > N) M = N;
50
+
51
+ vector<bool > vis (2 *N,false );
52
+
53
+ set<int > unseen;
54
+ for (int i=0 ; i< gg.size () ; ++i)unseen.insert (i);
50
55
for (int time = M ; time >= 0 && not_vis>0 ; --time)
51
56
{
52
- for (int i=0 ; i< gg.size () ; ++i){
57
+ vector<int >del;
58
+ for (auto i : unseen){
59
+ int status = (gg[i].cur << 1 ) + (gg[i].dir ==1 );
60
+ if (vis[status]){
61
+ del.push_back (i);
62
+ continue ;
63
+ }else vis[status] =true ;
53
64
int & cur = gg[i].cur ;
54
65
if (timep[cur]<time){
55
66
not_vis--;
@@ -60,6 +71,7 @@ void solve(){
60
71
}
61
72
gg[i].cur = (cur + gg[i].dir + N) % N;
62
73
}
74
+ for (auto e : del)unseen.erase (e);
63
75
}
64
76
vector<int > ans (G);
65
77
for (auto e: gg){
You can’t perform that action at this time.
0 commit comments