Submission #83775
Source Code Expand
#include <cstdio> #include <cstdlib> #include <cmath> #include <climits> #include <cfloat> #include<cassert> #include <map> #include <utility> #include <set> #include <iostream> #include <memory> #include <string> #include <vector> #include <algorithm> #include <functional> #include <sstream> #include <complex> #include <stack> #include <queue> #include<bitset> #define REP(i,b,n) for(int i=b;i<(int)n;i++) #define rep(i,n) REP(i,0,n) #define ALL(C) (C).begin(),(C).end() #define FOR(it,o) for(__typeof((o).begin()) it=(o).begin(); it!=(o).end(); ++it) #define dbg(x) cout << __LINE__ << ' ' << #x << " = " << (x) << endl typedef long long ll; using namespace std; const int MAX_V = 1000; const double INF = 1e9; class State{ public: double cost; int pos; bool operator<(const State &s)const{ return cost > s.cost; } }; class Edge{ public: int to, cap; double cost; int rev; }; int V; double dist[MAX_V]; int prevv[MAX_V], preve[MAX_V];//頂点数、ポテンシャル、距離、前の頂点、前のエッジ vector<Edge> G[MAX_V]; void addEdge(int from, int to, int cap, double cost){ G[from].push_back((Edge){to, cap, cost, G[to].size()}); G[to].push_back((Edge){from, 0, -cost, G[from].size()-1}); } double min_cost_flow(int s, int t, int f){ double ret = 0; while(f>0){ rep(i, V)dist[i] = INF; dist[s] = 0; bool update = true; while(update){ update =false; rep(v, V){ if(dist[v] == INF)continue; rep(i, G[v].size()){ Edge &e = G[v][i]; if(e.cap >0 && dist[e.to] > dist[v] + e.cost){ dist[e.to] = dist[v] + e.cost; prevv[e.to] = v; preve[e.to] = i; update = true; } } } } if(dist[t] == INF)return 0; //増加路に流す int mini = f; for(int v = t;v != s; v = prevv[v]){ mini = min(mini, G[prevv[v]][preve[v]].cap); } f -= mini; ret += mini * dist[t]; for(int v = t; v != s; v= prevv[v]){ Edge &e = G[prevv[v]][preve[v]]; e.cap -= mini; G[v][e.rev].cap += mini; } } return ret; } class P{ public: int x, y; }; const int N = 100; P p[N]; double getDist(P p1, P p2){ double x = abs(p1.x) - abs(p2.x); double y = p1.y - p2.y; return sqrt(x*x + y*y); } int main(){ int n; while(cin >> n){ rep(i, MAX_V)G[i].clear(); rep(i, n){ cin >> p[i].x >> p[i].y; } vector<P> left, right; double ans = 0; rep(i, n){ ans += abs(p[i].x); if(p[i].x < 0)left.push_back(p[i]); else if(p[i].x >0)right.push_back(p[i]); } int L = left.size(), R = right.size(); V = L + R + 2; rep(i, L){ addEdge(L+R, i, 1, 0); } rep(i, R){ addEdge(L+i, L+R+1, 1, 0); } rep(i, L){ rep(j, R){ addEdge(i, L+j, 1, min(getDist(left[i], right[j]) - (double)abs(left[i].x) - (double)abs(right[j].x), 0.)); } } printf("%.9lf\n", ans + min_cost_flow(L+R, L+R+1, min(L, R))); } return 0; }
Submission Info
Submission Time | |
---|---|
Task | B - 玉座の間 |
User | shioshiota |
Language | C++ (G++ 4.6.4) |
Score | 200 |
Code Size | 3111 Byte |
Status | AC |
Exec Time | 27 ms |
Memory | 916 KB |
Judge Result
Set Name | Subtask1 | Subtask2 | Subtask3 | Subtask4 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 50 / 50 | 50 / 50 | 50 / 50 | 50 / 50 | ||||||||
Status |
|
|
|
|
Set Name | Test Cases |
---|---|
Subtask1 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt |
Subtask2 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt |
Subtask3 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt, 31_rand00.txt, 31_rand01.txt, 31_rand02.txt, 31_rand03.txt, 31_rand04.txt, 31_rand05.txt, 31_rand06.txt, 31_rand07.txt, 31_rand08.txt, 31_rand09.txt, 31_rand10.txt, 31_rand11.txt, 31_rand12.txt, 31_rand13.txt, 31_rand14.txt, 31_rand15.txt, 31_rand16.txt, 31_rand17.txt, 31_rand18.txt, 31_rand19.txt, 31_rand20.txt, 31_rand21.txt, 31_rand22.txt, 31_rand23.txt, 31_rand24.txt |
Subtask4 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt, 31_rand00.txt, 31_rand01.txt, 31_rand02.txt, 31_rand03.txt, 31_rand04.txt, 31_rand05.txt, 31_rand06.txt, 31_rand07.txt, 31_rand08.txt, 31_rand09.txt, 31_rand10.txt, 31_rand11.txt, 31_rand12.txt, 31_rand13.txt, 31_rand14.txt, 31_rand15.txt, 31_rand16.txt, 31_rand17.txt, 31_rand18.txt, 31_rand19.txt, 31_rand20.txt, 31_rand21.txt, 31_rand22.txt, 31_rand23.txt, 31_rand24.txt, 41_rand00.txt, 41_rand01.txt, 41_rand02.txt, 41_rand03.txt, 41_rand04.txt, 41_rand05.txt, 41_rand06.txt, 41_rand07.txt, 41_rand08.txt, 41_rand09.txt, 41_rand10.txt, 41_rand11.txt, 41_rand12.txt, 41_rand13.txt, 41_rand14.txt, 41_rand15.txt, 41_rand16.txt, 41_rand17.txt, 41_rand18.txt, 41_rand19.txt, 41_rand20.txt, 41_rand21.txt, 41_rand22.txt, 41_rand23.txt, 41_rand24.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
11_rand00.txt | AC | 19 ms | 780 KB |
11_rand01.txt | AC | 21 ms | 732 KB |
11_rand02.txt | AC | 21 ms | 780 KB |
11_rand03.txt | AC | 20 ms | 780 KB |
11_rand04.txt | AC | 20 ms | 784 KB |
11_rand05.txt | AC | 20 ms | 780 KB |
11_rand06.txt | AC | 21 ms | 736 KB |
11_rand07.txt | AC | 21 ms | 732 KB |
11_rand08.txt | AC | 21 ms | 788 KB |
11_rand09.txt | AC | 20 ms | 776 KB |
11_rand10.txt | AC | 20 ms | 784 KB |
11_rand11.txt | AC | 20 ms | 776 KB |
11_rand12.txt | AC | 21 ms | 780 KB |
11_rand13.txt | AC | 20 ms | 736 KB |
11_rand14.txt | AC | 20 ms | 780 KB |
11_rand15.txt | AC | 21 ms | 784 KB |
11_rand16.txt | AC | 20 ms | 736 KB |
11_rand17.txt | AC | 20 ms | 784 KB |
11_rand18.txt | AC | 18 ms | 736 KB |
11_rand19.txt | AC | 21 ms | 736 KB |
11_rand20.txt | AC | 20 ms | 796 KB |
11_rand21.txt | AC | 21 ms | 784 KB |
11_rand22.txt | AC | 22 ms | 780 KB |
11_rand23.txt | AC | 23 ms | 776 KB |
11_rand24.txt | AC | 21 ms | 700 KB |
21_rand00.txt | AC | 21 ms | 0 KB |
21_rand01.txt | AC | 21 ms | 784 KB |
21_rand02.txt | AC | 20 ms | 780 KB |
21_rand03.txt | AC | 19 ms | 784 KB |
21_rand04.txt | AC | 18 ms | 780 KB |
21_rand05.txt | AC | 20 ms | 784 KB |
21_rand06.txt | AC | 21 ms | 736 KB |
21_rand07.txt | AC | 22 ms | 796 KB |
21_rand08.txt | AC | 20 ms | 792 KB |
21_rand09.txt | AC | 21 ms | 780 KB |
21_rand10.txt | AC | 21 ms | 784 KB |
21_rand11.txt | AC | 21 ms | 780 KB |
21_rand12.txt | AC | 21 ms | 732 KB |
21_rand13.txt | AC | 20 ms | 776 KB |
21_rand14.txt | AC | 20 ms | 780 KB |
21_rand15.txt | AC | 21 ms | 780 KB |
21_rand16.txt | AC | 21 ms | 780 KB |
21_rand17.txt | AC | 21 ms | 780 KB |
21_rand18.txt | AC | 20 ms | 780 KB |
21_rand19.txt | AC | 20 ms | 784 KB |
21_rand20.txt | AC | 21 ms | 780 KB |
21_rand21.txt | AC | 20 ms | 784 KB |
21_rand22.txt | AC | 20 ms | 792 KB |
21_rand23.txt | AC | 21 ms | 780 KB |
21_rand24.txt | AC | 21 ms | 776 KB |
31_rand00.txt | AC | 20 ms | 788 KB |
31_rand01.txt | AC | 20 ms | 784 KB |
31_rand02.txt | AC | 21 ms | 780 KB |
31_rand03.txt | AC | 21 ms | 780 KB |
31_rand04.txt | AC | 20 ms | 788 KB |
31_rand05.txt | AC | 21 ms | 788 KB |
31_rand06.txt | AC | 21 ms | 772 KB |
31_rand07.txt | AC | 19 ms | 776 KB |
31_rand08.txt | AC | 20 ms | 780 KB |
31_rand09.txt | AC | 21 ms | 780 KB |
31_rand10.txt | AC | 19 ms | 772 KB |
31_rand11.txt | AC | 21 ms | 708 KB |
31_rand12.txt | AC | 21 ms | 776 KB |
31_rand13.txt | AC | 21 ms | 732 KB |
31_rand14.txt | AC | 20 ms | 780 KB |
31_rand15.txt | AC | 20 ms | 772 KB |
31_rand16.txt | AC | 21 ms | 764 KB |
31_rand17.txt | AC | 20 ms | 784 KB |
31_rand18.txt | AC | 20 ms | 784 KB |
31_rand19.txt | AC | 21 ms | 732 KB |
31_rand20.txt | AC | 21 ms | 780 KB |
31_rand21.txt | AC | 21 ms | 788 KB |
31_rand22.txt | AC | 20 ms | 780 KB |
31_rand23.txt | AC | 21 ms | 780 KB |
31_rand24.txt | AC | 21 ms | 784 KB |
41_rand00.txt | AC | 20 ms | 788 KB |
41_rand01.txt | AC | 20 ms | 772 KB |
41_rand02.txt | AC | 21 ms | 784 KB |
41_rand03.txt | AC | 23 ms | 780 KB |
41_rand04.txt | AC | 21 ms | 908 KB |
41_rand05.txt | AC | 19 ms | 784 KB |
41_rand06.txt | AC | 21 ms | 784 KB |
41_rand07.txt | AC | 24 ms | 908 KB |
41_rand08.txt | AC | 20 ms | 780 KB |
41_rand09.txt | AC | 20 ms | 784 KB |
41_rand10.txt | AC | 21 ms | 788 KB |
41_rand11.txt | AC | 22 ms | 900 KB |
41_rand12.txt | AC | 23 ms | 916 KB |
41_rand13.txt | AC | 21 ms | 784 KB |
41_rand14.txt | AC | 21 ms | 796 KB |
41_rand15.txt | AC | 20 ms | 780 KB |
41_rand16.txt | AC | 21 ms | 780 KB |
41_rand17.txt | AC | 22 ms | 784 KB |
41_rand18.txt | AC | 27 ms | 908 KB |
41_rand19.txt | AC | 25 ms | 912 KB |
41_rand20.txt | AC | 23 ms | 724 KB |
41_rand21.txt | AC | 21 ms | 780 KB |
41_rand22.txt | AC | 21 ms | 784 KB |
41_rand23.txt | AC | 23 ms | 908 KB |
41_rand24.txt | AC | 20 ms | 908 KB |