Submission #97412


Source Code Expand

#include <cstdio>
#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <bitset>
#include <numeric>
#include <climits>
#include <cfloat>
#include <functional>
using namespace std;

int n;
vector<int> r;

vector<double> solve(int a, int b)
{
    if(a == b - 1){
        vector<double> ret(n, 0.0);
        ret[a] = 1.0;
        return ret;
    }

    int c = a + (b - a) / 2;
    vector<double> x = solve(a, c);
    vector<double> y = solve(c, b);

    vector<double> ret(n, 0.0);
    for(int i=a; i<c; ++i){
        for(int j=c; j<b; ++j){
            double p = 1.0 / (1.0 + pow(10.0, (r[j] - r[i]) / 400.0));
            ret[i] += x[i] * y[j] * p;
            ret[j] += x[i] * y[j] * (1.0 - p);
        }
    }
    return ret;
}

int main()
{
    cin >> n;
    n = 1 << n;

    r.resize(n);
    for(int i=0; i<n; ++i)
        cin >> r[i];

    vector<double> ret = solve(0, n);
    for(int i=0; i<n; ++i)
        printf("%.10f\n", ret[i]);
    return 0;
}

Submission Info

Submission Time
Task C - トーナメント
User mamekin
Language C++ (G++ 4.6.4)
Score 4
Code Size 1203 Byte
Status AC
Exec Time 84 ms
Memory 916 KB

Judge Result

Set Name All
Score / Max Score 4 / 4
Status
AC × 6
Set Name Test Cases
All 00, 01, 02, 03, 90, 91
Case Name Status Exec Time Memory
00 AC 84 ms 824 KB
01 AC 84 ms 820 KB
02 AC 38 ms 916 KB
03 AC 84 ms 824 KB
90 AC 19 ms 788 KB
91 AC 19 ms 780 KB