結果
| 問題 | No.398 ハーフパイプ(2) |
| コンテスト | |
| ユーザー |
tubo28
|
| 提出日時 | 2016-07-16 18:18:54 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 40 ms / 2,000 ms |
| コード長 | 2,041 bytes |
| コンパイル時間 | 1,240 ms |
| コンパイル使用メモリ | 119,720 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-27 14:42:05 |
| 合計ジャッジ時間 | 2,017 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
ソースコード
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cfloat>
#include <map>
#include <utility>
#include <set>
#include <iostream>
#include <memory>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <sstream>
#include <deque>
#include <complex>
#include <stack>
#include <queue>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <ctime>
#include <iterator>
#include <bitset>
#include <numeric>
#include <list>
#include <iomanip>
#include <cassert>
#include <array>
#include <tuple>
#include <initializer_list>
#include <unordered_set>
#include <unordered_map>
#include <forward_list>
using namespace std;
using ll = long long;
#define rep(i,k) for (int i = 0; i < (int)(k); i++)
#define all(c) begin(c), end(c)
#define int ll
int fac(int x) {
return x == 0 ? 1 : x * fac(x - 1);
}
int count(vector<int> a) {
map<int, int> c;
assert(a.size() == 6);
for (int i = 0; i < a.size(); i++) {
++c[a[i]];
}
int res = fac(6);
for (auto &e : c) {
res /= fac(e.second);
}
return res;
}
decltype(0) main() {
double xx;
while (cin >> xx) {
int x = xx * 4 + 0.5;
// OIESや埋め込みをせずに真面目にときます
int ans = 0;
for (int i = 0; i <= 100; i++) {
for (int j = i; j <= 100; j++) {
for (int k = j; k <= 100; k++) {
for (int l = k; l <= 100; l++) {
if (i + j + k + l == x) {
// 両端一致したりしなかったりを合わせるのが面倒くさい
ans += count({ 0,i,j,k,l,100 }) * i * (100 - l);
if (l != 100) ans += count({ i,i,j,k,l,100 }) * (100 - l);
if (i != 0) ans += count({ 0,i,j,k,l,l }) * i;
ans += count({ i,i,j,k,l,l });
}
}
}
}
}
cout << ans << endl;
}
}
tubo28