답안 #885682

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
885682 2023-12-10T13:00:03 Z boris_mihov Let's Win the Election (JOI22_ho_t3) C++17
0 / 100
2500 ms 604 KB
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <numeric>
#include <cassert>
#include <vector>

typedef long long llong;
const int MAXN = 5000 + 10;
const llong INF = 1e18;
const int INTINF = 1e9; 

struct Person
{
    int a, b;
    friend bool operator < (const Person &x, const Person &y)
    {
        if (y.b == -1) return true;
        if (x.b == -1) return false;
        return x.b < y.b;
    }
};

int n, k;
Person p[MAXN];
Person s[MAXN];

void solve()
{
    std::sort(p + 1, p + 1 + n);
    int countColab = 0;
    
    for (int i = 1 ; i <= n ; ++i)
    {
        countColab += (p[i].b != -1);
    }   

    double ans = INF;
    countColab = std::min(countColab, k);
    assert(countColab == 0);
    
    for (int colab = 0 ; colab <= countColab ; ++colab)
    {
        double curr = 0;
        for (int i = 1 ; i <= colab ; ++i)
        {
            curr += (double)p[i].b / i;
        }

        for (int i = colab + 1 ; i <= n ; ++i)
        {
            s[i] = p[i];
        }

        std::sort(s + colab + 1, s + n + 1, [&](const Person &x, const Person &y)
        {
            return x.a < y.a;
        });

        for (int i = colab + 1 ; i <= k ; ++i)
        {
            curr += (double)s[i].a / (colab + 1);
        }

        ans = std::min(ans, curr);
    }   

    std::cout << std::fixed << std::setprecision(10) << ans << '\n';
}

void input()
{
    std::cin >> n >> k;
    for (int i = 1 ; i <= n ; ++i)
    {
        std::cin >> p[i].a >> p[i].b;
    }
}

void fastIOI()
{
    std::ios_base :: sync_with_stdio(0);
    std::cout.tie(nullptr);
    std::cin.tie(nullptr);
}

int main()
{
    fastIOI();
    input();
    solve();
    
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Execution timed out 2580 ms 348 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Execution timed out 2580 ms 348 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 600 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 600 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 600 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 604 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Execution timed out 2580 ms 348 KB Time limit exceeded
6 Halted 0 ms 0 KB -