結果

問題 No.133 カードゲーム
ユーザー doikimihirodoikimihiro
提出日時 2018-08-14 06:46:00
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 2 ms / 5,000 ms
コード長 1,297 bytes
コンパイル時間 2,492 ms
コンパイル使用メモリ 167,200 KB
実行使用メモリ 4,348 KB
最終ジャッジ日時 2023-10-24 16:59:55
合計ジャッジ時間 3,327 ms
ジャッジサーバーID
(参考情報)
judge11 / judge14
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
4,348 KB
testcase_01 AC 1 ms
4,348 KB
testcase_02 AC 2 ms
4,348 KB
testcase_03 AC 2 ms
4,348 KB
testcase_04 AC 1 ms
4,348 KB
testcase_05 AC 1 ms
4,348 KB
testcase_06 AC 2 ms
4,348 KB
testcase_07 AC 1 ms
4,348 KB
testcase_08 AC 2 ms
4,348 KB
testcase_09 AC 1 ms
4,348 KB
testcase_10 AC 1 ms
4,348 KB
testcase_11 AC 1 ms
4,348 KB
testcase_12 AC 1 ms
4,348 KB
testcase_13 AC 1 ms
4,348 KB
testcase_14 AC 1 ms
4,348 KB
testcase_15 AC 1 ms
4,348 KB
testcase_16 AC 1 ms
4,348 KB
testcase_17 AC 2 ms
4,348 KB
testcase_18 AC 1 ms
4,348 KB
testcase_19 AC 1 ms
4,348 KB
testcase_20 AC 1 ms
4,348 KB
testcase_21 AC 1 ms
4,348 KB
testcase_22 AC 1 ms
4,348 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
#pragma warning(disable:4996)
using namespace std;
using ll = long long;
const int dx[4] = { 1,0,-1,0 }, dy[4] = { 0,1,0,-1 };
int N;
vector<vector<int>>ass;
vector<vector<int>>bss;
void permutation1(int pos, vector<bool>&used,vector<int>&perm,vector<int>&v,vector<vector<int>>&vss) {
	if (pos == N) {
		vss.push_back(perm);
		return;
	}
	for (int i = 0; i < N; i++) {
		if (!used[i]) {
			perm[pos] = v[i];
			used[i] = true;
			permutation1(pos + 1,used,perm, v,vss);
			used[i] = false;
		}
	}
	return;
}
int main() {
	cin >> N;
	vector<int>as(N);
	vector<int>bs(N);
	for (int i = 0; i < N; i++) {
		cin >> as[i];
	}
	for (int i =0 ; i < N; i++) {
		cin >> bs[i];
	}
	vector<bool>used1(N, false);
	vector<int>perm1(N);
	permutation1(0, used1, perm1, as, ass);
	vector<bool>used2(N, false);
	vector<int>perm2(N);
	permutation1(0, used2, perm2, bs, bss);
	int win_num = 0;
	int total_num = 0;
	for (int i = 0; i < ass.size(); i++) {
		for (int j = 0; j < bss.size(); j++) {
			total_num++;
			int win = 0;
			int lose = 0;
			for (int k = 0; k < N; k++) {
				if (ass[i][k] > bss[j][k]) {
					win++;
				}
				else if (ass[i][k] < bss[j][k]) {
					lose++;
				}
			}
			if (win > lose) {
				win_num++;
			}
		}
	}
	cout << (double)win_num / (double)total_num << endl;
}
0