QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#796640#9620. osu!maniaCatbiscuit#AC ✓0ms3892kbC++202.0kb2024-12-01 22:47:102024-12-01 22:47:10

Judging History

你现在查看的是最新测评结果

  • [2024-12-01 22:47:10]
  • 评测
  • 测评结果:AC
  • 用时:0ms
  • 内存:3892kb
  • [2024-12-01 22:47:10]
  • 提交

answer

#include <iostream>
#include <algorithm>
#include <map>
#include <cstring>
#include <string>
#include <vector>
#include <cctype>
#include <cmath>
#include <queue>
#include <set>
#include <functional>
#include <unordered_map>
using namespace std;
typedef long long LL;
typedef pair<LL, LL> PLL;
#define qwq ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define tcase      \
    LL t = read(); \
    while (t--)

LL read()
{
    LL sum = 0, fl = 1;
    int ch = getchar();
    for (; !isdigit(ch); ch = getchar())
        if (ch == '-')
            fl = -1;
    for (; isdigit(ch); ch = getchar())
        sum = sum * 10 + ch - '0';
    return sum * fl;
}
// #define long double double
void solve()
{
    // 0..9342
    LL ppmax = read();
    LL a = read(), b = read(), c = read(), d = read(), e = read(), f = read();
    LL sum = a + b + c + d + e + f;
    // cout << sum << endl;
    long double acc = 1.0 * (300 * a + 300 * b + 200 * c + 100 * d + 50 * e + 0 * f) / (300 * sum);
    // cout << acc << endl;
    // cout << "tmp " << (300 * a + 300 * b + 200 * c + 100 * d + 50 * e + 0 * f) << endl;
    acc = llroundl(acc * 10000) / 100.0;
    // cout << cur_pp << endl;
    long double pp = 0;
    if (10 * (320 * a + 300 * b + 200 * c + 100 * d + 50 * e + 0 * f) > 8 * (320 * sum))
        pp = (1.0 * (320 * a + 300 * b + 200 * c + 100 * d + 50 * e + 0 * f) * 5 * ppmax - 8 * 5 * ppmax * 32 * sum) / (320 * sum);
    // cout << (LL)(pp * 10000) << endl;
    // auto myround = [&](long double val)
    // {
    //     LL down = val;
    //     LL up = down + 1;
    //     printf("%LF %LF\n", val - (long double)down, (long double)up - val);
    //     if (val - (long double)down < (long double)up - val)
    //         return down;
    //     return up;
    // };
    // printf("%Lf\n", pp * 1000000);
    // cout << (LL)(pp * 10) % 10 << endl;
    printf("%.2Lf", acc);
    cout << "% ";
    // cout << pp << endl;
    printf("%lld\n", llroundl(pp));
}

int main()
{
    tcase
    solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3892kb

input:

18
1279
4624 4458 1109 220 103 314
753
3604 3204 391 33 9 29
807
5173 3986 763 84 29 96
718
576 461 60 5 2 7
947
4058 3268 764 169 42 158
568
2660 1731 161 16 6 15
641
4181 3126 656 56 10 43
630
3029 2336 377 41 10 61
529
1991 1354 181 11 9 5
1802
8321 2335 115 19 11 27
1645
3965 1087 41 6 1 13
1688...

output:

91.54% 543
97.40% 543
95.75% 523
97.12% 513
93.38% 499
98.16% 444
96.19% 430
96.20% 423
97.74% 400
99.19% 1604
99.38% 1482
99.14% 1465
98.53% 1251
100.00% 2688
100.00% 1792
100.00% 3000
52.78% 0
0.00% 0

result:

ok 18 lines