提出 #372963


ソースコード 拡げる

#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <numeric>
#include <cctype>
#include <tuple>
#include <array>
#include <climits>
#include <bitset>
#include <cassert>
#include <unordered_map>
#include <complex>

#ifdef _MSC_VER
#include <agents.h>
#endif

#define FOR(i, a, b) for(int i = (a); i < (int)(b); ++i)
#define rep(i, n) FOR(i, 0, n)
#define ALL(v) v.begin(), v.end()
#define REV(v) v.rbegin(), v.rend()
#define MEMSET(v, s) memset(v, s, sizeof(v))
#define UNIQUE(v) (v).erase(unique(ALL(v)), (v).end())
#define MP make_pair
#define MT make_tuple

using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> P;

class bipartite_graph{
	vector<vector<int> > Graph;
	vector<int> used, match;
	int V;
public:
	bipartite_graph(int size) :V(size){
		Graph.resize(V);
		used.resize(V, 0);
		match.resize(V, -1);
	}
	void add_edge(int from, int to){
		Graph[from].push_back(to);
		Graph[to].push_back(from);
	}
	int dfs(int v){
		used[v] = 1;
		for (int i = 0; i < Graph[v].size(); i++){
			int x = Graph[v][i], w = match[x];
			if (w < 0 || !used[w] && dfs(w)){
				match[x] = v;
				match[v] = x;
				return 1;
			}
		}
		return 0;
	}
	int matching(){
		fill(match.begin(), match.end(), -1);
		int res = 0;
		for (int v = 0; v < V; v++){
			if (match[v] >= 0) continue;
			fill(used.begin(), used.end(), 0);
			if (dfs(v)) res++;
		}
		return res;
	}
};

int main(){
	cin.tie(0);
	ios::sync_with_stdio(false);
	cout.setf(ios::fixed);
	cout.precision(20);

	int m;
	cin >> m;
	vector<int> px(m), py(m), s(m), t(m);
	rep(i, m){
		cin >> px[i] >> py[i];
	}
	int n;
	cin >> n;
	px.resize(m + n);
	py.resize(m + n);
	s.resize(m + n);
	t.resize(m + n);
	FOR(i, m, m + n){
		cin >> px[i] >> py[i] >> s[i] >> t[i];
	}

	int k = m + n;
	bipartite_graph G(k*2);

	auto check = [&](int a, int b){
		int dsq = (px[a] - px[b]) * (px[a] - px[b]) + (py[a] - py[b])*(py[a] - py[b]);
		return dsq <= (s[b] - t[a])*(s[b] - t[a]);
	};

	rep(i, k) FOR(j, i + 1, k){
		if (j >= m && check(i, j)){
			G.add_edge(i, j + k);
		}
	}

	//cout << k - G.matching() << endl;

	cout << (k - G.matching() <= m ? "YES" : "NO") << endl;
}

提出情報

提出日時
問題 D - ラボライブ タフグローバルフェスティバル
ユーザ yuusune
言語 C++11 (GCC 4.9.2)
得点 200
コード長 2451 Byte
結果 AC
実行時間 67 ms
メモリ 6184 KiB

ジャッジ結果

セット名 All
得点 / 配点 200 / 200
結果
AC × 54
セット名 テストケース
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
ケース名 結果 実行時間 メモリ
scrambled_00.txt AC 27 ms 768 KiB
scrambled_01.txt AC 22 ms 928 KiB
scrambled_02.txt AC 24 ms 924 KiB
scrambled_03.txt AC 64 ms 6184 KiB
scrambled_04.txt AC 64 ms 6180 KiB
scrambled_05.txt AC 62 ms 6176 KiB
scrambled_06.txt AC 67 ms 6176 KiB
scrambled_07.txt AC 67 ms 6176 KiB
scrambled_08.txt AC 24 ms 924 KiB
scrambled_09.txt AC 24 ms 920 KiB
scrambled_10.txt AC 24 ms 928 KiB
scrambled_11.txt AC 24 ms 928 KiB
scrambled_12.txt AC 24 ms 928 KiB
scrambled_13.txt AC 22 ms 800 KiB
scrambled_14.txt AC 22 ms 920 KiB
scrambled_15.txt AC 24 ms 804 KiB
scrambled_16.txt AC 24 ms 928 KiB
scrambled_17.txt AC 24 ms 928 KiB
scrambled_18.txt AC 24 ms 800 KiB
scrambled_19.txt AC 22 ms 920 KiB
scrambled_20.txt AC 24 ms 928 KiB
scrambled_21.txt AC 24 ms 804 KiB
scrambled_22.txt AC 24 ms 924 KiB
scrambled_23.txt AC 40 ms 2976 KiB
scrambled_24.txt AC 25 ms 1440 KiB
scrambled_25.txt AC 44 ms 4724 KiB
scrambled_26.txt AC 28 ms 1444 KiB
scrambled_27.txt AC 27 ms 1312 KiB
scrambled_28.txt AC 32 ms 2216 KiB
scrambled_29.txt AC 40 ms 3372 KiB
scrambled_30.txt AC 33 ms 2144 KiB
scrambled_31.txt AC 51 ms 3744 KiB
scrambled_32.txt AC 32 ms 1692 KiB
scrambled_33.txt AC 41 ms 2200 KiB
scrambled_34.txt AC 28 ms 1068 KiB
scrambled_35.txt AC 39 ms 2080 KiB
scrambled_36.txt AC 32 ms 1684 KiB
scrambled_37.txt AC 27 ms 916 KiB
scrambled_38.txt AC 25 ms 920 KiB
scrambled_39.txt AC 25 ms 732 KiB
scrambled_40.txt AC 24 ms 796 KiB
scrambled_41.txt AC 24 ms 920 KiB
scrambled_42.txt AC 24 ms 924 KiB
scrambled_43.txt AC 24 ms 920 KiB
scrambled_44.txt AC 25 ms 792 KiB
scrambled_45.txt AC 24 ms 924 KiB
scrambled_46.txt AC 25 ms 920 KiB
scrambled_47.txt AC 24 ms 792 KiB
scrambled_48.txt AC 25 ms 920 KiB
scrambled_49.txt AC 25 ms 792 KiB
scrambled_50.txt AC 24 ms 916 KiB
scrambled_51.txt AC 24 ms 804 KiB
scrambled_52.txt AC 53 ms 5404 KiB
scrambled_53.txt AC 22 ms 804 KiB