Submission #372967
Source Code Expand
//#define NDEBUG #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <map> #include <queue> #include <set> #include <tuple> #include <cassert> #include <numeric> #include <cstdio> #include <complex> using namespace std; typedef long long ll; typedef long double D; /** * Dinic法による最大流 * * ほとんど蟻本そのまま * template引数のint Vは頂点数 */ template<int V> struct MaxFlow { using T = int; /// 辺の重みの型 const T INF = 1<<28; struct Edge { int to, rev; T cap; }; vector<Edge> g[V]; int level[V]; int iter[V]; /// 初期化 void init() { for (int i = 0; i < V; i++) { g[i].clear(); } } /// 有向辺の追加 void add(int from, int to, T cap) { assert(0 <= from && from < V); assert(0 <= to && to < V); assert(from != to); g[from].push_back(Edge{to, (int)g[to].size(), cap}); g[to].push_back(Edge{from, (int)g[from].size()-1, 0}); } /// 無向辺の追加 void add_multi(int from, int to, T cap) { g[from].push_back(Edge{to, (int)g[to].size(), cap}); g[to].push_back(Edge{from, (int)g[from].size()-1, cap}); } void bfs(int s) { fill_n(level, V, -1); queue<int> que; level[s] = 0; que.push(s); while (!que.empty()) { int v = que.front(); que.pop(); for (Edge e: g[v]) { if (e.cap <= 0) continue; if (level[e.to] < 0) { level[e.to] = level[v] + 1; que.push(e.to); } } } } T dfs(int v, int t, T f) { if (v == t) return f; for (int &i = iter[v]; i < (int)g[v].size(); i++) { Edge &e = g[v][i]; if (e.cap <= 0) continue; if (level[v] < level[e.to]) { T d = dfs(e.to, t, min(f, e.cap)); if (d <= 0) continue; e.cap -= d; g[e.to][e.rev].cap += d; return d; } } return 0; } // sからtへの最大流を返す T exec(int s, int t) { T flow = 0; while (true) { bfs(s); if (level[t] < 0) return flow; fill_n(iter, V, 0); T f; while ((f = dfs(s, t, INF)) > 0) { flow += f; } } } }; typedef long double R; typedef complex<R> P; const R EPS = 1e-10; const R PI = acos((R)(-1)); /* -1 -> neg 0 -> near 0 1 -> pos */ int sgn(R a) { if (a < -EPS) return -1; if (a > EPS) return 1; return 0; } int sgn(R a, R b) { return sgn(b-a); } P yubi[3]; MaxFlow<3000> mf; P note[1010]; int sn[1010], tn[1010]; int main() { mf.init(); int m; cin >> m; //0..m yubi //10..n+10 note //1100 start 1101 end //1500 offset int sv = 1100, ev = 1101, off = 1500; for (int i = 0; i < m; i++) { R x, y; cin >> x >> y; yubi[i] = P(x, y); mf.add(sv, i, 1); mf.add(i+off, ev, 1); } int n; cin >> n; for (int i = 0; i < n; i++) { R x, y; cin >> x >> y >> sn[i] >> tn[i]; note[i] = P(x, y); mf.add(sv, i+10, 1); mf.add(i+off+10, ev, 1); for (int j = 0; j < m; j++) { if (sgn(abs(yubi[j]-note[i]), sn[i]) != -1) { mf.add(j, i+off+10, 1); } } for (int j = 0; j < i; j++) { assert(sn[i]-tn[j] >= 0); if (sgn(abs(note[j]-note[i]), sn[i]-tn[j]) != -1) { mf.add(j+10, i+off+10, 1); } } } if (m+n - mf.exec(sv, ev) <= m) { cout << "YES" << endl; } else { cout << "NO" << endl; } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - ラボライブ タフグローバルフェスティバル |
User | yosupo |
Language | C++11 (GCC 4.9.2) |
Score | 200 |
Code Size | 4052 Byte |
Status | AC |
Exec Time | 181 ms |
Memory | 16548 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 200 / 200 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | scrambled_00.txt, scrambled_01.txt, scrambled_02.txt, scrambled_03.txt, scrambled_04.txt, scrambled_05.txt, scrambled_06.txt, scrambled_07.txt, scrambled_08.txt, scrambled_09.txt, scrambled_10.txt, scrambled_11.txt, scrambled_12.txt, scrambled_13.txt, scrambled_14.txt, scrambled_15.txt, scrambled_16.txt, scrambled_17.txt, scrambled_18.txt, scrambled_19.txt, scrambled_20.txt, scrambled_21.txt, scrambled_22.txt, scrambled_23.txt, scrambled_24.txt, scrambled_25.txt, scrambled_26.txt, scrambled_27.txt, scrambled_28.txt, scrambled_29.txt, scrambled_30.txt, scrambled_31.txt, scrambled_32.txt, scrambled_33.txt, scrambled_34.txt, scrambled_35.txt, scrambled_36.txt, scrambled_37.txt, scrambled_38.txt, scrambled_39.txt, scrambled_40.txt, scrambled_41.txt, scrambled_42.txt, scrambled_43.txt, scrambled_44.txt, scrambled_45.txt, scrambled_46.txt, scrambled_47.txt, scrambled_48.txt, scrambled_49.txt, scrambled_50.txt, scrambled_51.txt, scrambled_52.txt, scrambled_53.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
scrambled_00.txt | AC | 24 ms | 1048 KB |
scrambled_01.txt | AC | 24 ms | 860 KB |
scrambled_02.txt | AC | 25 ms | 1052 KB |
scrambled_03.txt | AC | 120 ms | 16548 KB |
scrambled_04.txt | AC | 119 ms | 16544 KB |
scrambled_05.txt | AC | 121 ms | 16548 KB |
scrambled_06.txt | AC | 120 ms | 16536 KB |
scrambled_07.txt | AC | 120 ms | 16544 KB |
scrambled_08.txt | AC | 25 ms | 1044 KB |
scrambled_09.txt | AC | 25 ms | 916 KB |
scrambled_10.txt | AC | 25 ms | 1052 KB |
scrambled_11.txt | AC | 25 ms | 860 KB |
scrambled_12.txt | AC | 24 ms | 1048 KB |
scrambled_13.txt | AC | 25 ms | 1044 KB |
scrambled_14.txt | AC | 26 ms | 932 KB |
scrambled_15.txt | AC | 27 ms | 928 KB |
scrambled_16.txt | AC | 25 ms | 1048 KB |
scrambled_17.txt | AC | 25 ms | 1044 KB |
scrambled_18.txt | AC | 27 ms | 1040 KB |
scrambled_19.txt | AC | 25 ms | 1048 KB |
scrambled_20.txt | AC | 28 ms | 984 KB |
scrambled_21.txt | AC | 25 ms | 1052 KB |
scrambled_22.txt | AC | 25 ms | 932 KB |
scrambled_23.txt | AC | 72 ms | 7208 KB |
scrambled_24.txt | AC | 36 ms | 2336 KB |
scrambled_25.txt | AC | 110 ms | 12452 KB |
scrambled_26.txt | AC | 38 ms | 2988 KB |
scrambled_27.txt | AC | 37 ms | 2724 KB |
scrambled_28.txt | AC | 67 ms | 4976 KB |
scrambled_29.txt | AC | 98 ms | 7968 KB |
scrambled_30.txt | AC | 68 ms | 4856 KB |
scrambled_31.txt | AC | 113 ms | 9376 KB |
scrambled_32.txt | AC | 49 ms | 3616 KB |
scrambled_33.txt | AC | 114 ms | 5104 KB |
scrambled_34.txt | AC | 41 ms | 1824 KB |
scrambled_35.txt | AC | 101 ms | 4516 KB |
scrambled_36.txt | AC | 62 ms | 2980 KB |
scrambled_37.txt | AC | 27 ms | 1068 KB |
scrambled_38.txt | AC | 23 ms | 944 KB |
scrambled_39.txt | AC | 22 ms | 936 KB |
scrambled_40.txt | AC | 23 ms | 1052 KB |
scrambled_41.txt | AC | 24 ms | 1048 KB |
scrambled_42.txt | AC | 23 ms | 1056 KB |
scrambled_43.txt | AC | 24 ms | 932 KB |
scrambled_44.txt | AC | 24 ms | 928 KB |
scrambled_45.txt | AC | 23 ms | 1052 KB |
scrambled_46.txt | AC | 24 ms | 928 KB |
scrambled_47.txt | AC | 24 ms | 936 KB |
scrambled_48.txt | AC | 25 ms | 924 KB |
scrambled_49.txt | AC | 24 ms | 1048 KB |
scrambled_50.txt | AC | 24 ms | 1052 KB |
scrambled_51.txt | AC | 24 ms | 928 KB |
scrambled_52.txt | AC | 181 ms | 14240 KB |
scrambled_53.txt | AC | 25 ms | 1056 KB |