This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
#define pb push_back
#define pr pair < int, int >
#define forn(i, a, b) for(int i=a; i<=b; ++i)
#define repn(i, a, b) for(int i=a; i <b; ++i)
const int N = 1e5 + 10;
vector < pair < pr, int > > v;
multiset < pair < pr, int > > ms;
int n, w;
vector < pr > e[N][5];
bool visit[N];
vector < int > ans;
pr p[N];
istream & operator >> (istream &is, pr &p) {
is >> p.x >> p.y;
return is;
}
int direction(pr &pa, pr &pb) {
if (pb.x == pa.x) {
if (pb.y > pa.y) return 0;
return 2;
}
if (pb.x > pa.x) return 1;
return 3;
}
int go(int u, int dir = 0) {
if (visit[u]) return u;
visit[u] = true;
repn(i, 0, 4) {
int nxt = ( (dir + 1) - i + 4 ) % 4;
if (e[u][nxt].empty()) continue;
auto ed = e[u][nxt].front();
e[u][nxt].clear();
int v = ed.y;
e[v][(nxt + 2) % 4].clear();
int loop = go(v, nxt);
if (!loop) {
ans.pb(ed.x);
continue;
}
if (loop != u) {
visit[u] = false;
return loop;
}
}
visit[u] = false;
return 0;
}
int main() {
ios::sync_with_stdio(0);
cin >> n;
forn(i, 1, n) {
cin >> p[i];
v.pb({p[i], i});
}
cin >> w;
forn(i, 1, w) {
int u, v;
cin >> u >> v;
e[u][direction(p[u], p[v])].pb({i, v});
e[v][direction(p[v], p[u])].pb({i, u});
}
sort(v.begin(), v.end());
for(auto st: v) go(st.y);
cout << ans.size() << '\n';
for(auto id: ans) cout << id << '\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |