Submission #941931

# Submission time Handle Problem Language Result Execution time Memory
941931 2024-03-09T18:26:19 Z ErJ Let's Win the Election (JOI22_ho_t3) C++17
0 / 100
2500 ms 108352 KB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define vi vector<ll>
#define vvi vector<vector<ll>>
#define vs vector<string>
#define vc vector<char>
#define vb vector<bool>
#define vp vector<pair<ll, ll>>
#define pp pair<ll, ll>
#define qi queue<ll>
#define qp queue<pp>
#define pqi priority_queue<ll>
#define pqp priority_queue<pp>
#define mi map<ll, ll>
#define mpi map<pp, ll>
#define mip map<ll, pp>
#define mpp map<pp, pp>
#define mb map<ll, bool>
#define si set<ll>
#define sp set<pp>
#define mod 1000000007
#define rep(a, b) for(int a = 0; a < (b); a++)
#define rep2(a, b) for(int a = 1; a < (b); a++)
#define inf 1000000000000000000


vi A, B;
vp C;
ll n, k;

double solve(ll m) {
    vector<vector<vector<double>>> dp(n);
    rep(i, n) {
        dp[i].resize(k + 1);
        rep(j, dp[i].size()) {
            dp[i][j].resize(m + 1);
            rep(l, dp[i][j].size()) {
                dp[i][j][l] = inf;
            }
        }
    }
    dp[0][0][0] = 0;
    dp[0][1][0] = C[0].second;
    dp[0][1][1] = C[0].first;
    for (int i = 1; i < dp.size(); i++) {
        rep(j, dp[i].size()) {
            rep(l, dp[i][j].size()) {
                dp[i][j][l] = dp[i - 1][j][l];
                if (j > 0) {
                    dp[i][j][l] = min(dp[i][j][l], dp[i - 1][j - 1][l] + 1.0 * C[i].second / (m + 1));
                    if (l > 0) {
                        dp[i][j][l] = min(dp[i][j][l], dp[i - 1][j - 1][l - 1] + 1.0 * C[i].first / (l));
                    }
                }
            }
        }
    }
    return dp[n - 1][k][m];
}

int main()
{
    cin >> n >> k;
    A.resize(n);
    B.resize(n);
    C.resize(n);
    rep(i, n) {
        cin >> A[i] >> B[i];
        if (B[i] == -1) {
            B[i] = inf;
        }
        C[i] = { B[i], A[i] };
    }
    sort(C.begin(), C.end());
    double MIN = 19811595300000.95;
    rep(i, k) {
        MIN = min(MIN, solve(i + 1));
    }
    sort(A.begin(), A.end());
    double ans1 = 0;
    rep(i, k) {
        ans1 += A[i];
    }
    MIN = min(MIN, ans1);
    
    cout << fixed << MIN << endl;
}

Compilation message

Main.cpp: In function 'double solve(long long int)':
Main.cpp:24:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<double> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 | #define rep(a, b) for(int a = 0; a < (b); a++)
      |                                    ^
Main.cpp:37:9: note: in expansion of macro 'rep'
   37 |         rep(j, dp[i].size()) {
      |         ^~~
Main.cpp:24:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<double>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 | #define rep(a, b) for(int a = 0; a < (b); a++)
      |                                    ^
Main.cpp:39:13: note: in expansion of macro 'rep'
   39 |             rep(l, dp[i][j].size()) {
      |             ^~~
Main.cpp:47:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<std::vector<double> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |     for (int i = 1; i < dp.size(); i++) {
      |                     ~~^~~~~~~~~~~
Main.cpp:24:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<double> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 | #define rep(a, b) for(int a = 0; a < (b); a++)
      |                                    ^
Main.cpp:48:9: note: in expansion of macro 'rep'
   48 |         rep(j, dp[i].size()) {
      |         ^~~
Main.cpp:24:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<double>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 | #define rep(a, b) for(int a = 0; a < (b); a++)
      |                                    ^
Main.cpp:49:13: note: in expansion of macro 'rep'
   49 |             rep(l, dp[i][j].size()) {
      |             ^~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 344 KB Output is correct
5 Correct 274 ms 11568 KB Output is correct
6 Execution timed out 2527 ms 54612 KB Time limit exceeded
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 344 KB Output is correct
5 Correct 274 ms 11568 KB Output is correct
6 Execution timed out 2527 ms 54612 KB Time limit exceeded
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 424 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 432 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Incorrect 0 ms 348 KB Output isn't correct
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 424 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 432 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Incorrect 0 ms 348 KB Output isn't correct
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 424 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 432 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Incorrect 0 ms 348 KB Output isn't correct
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2604 ms 108352 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 344 KB Output is correct
5 Correct 274 ms 11568 KB Output is correct
6 Execution timed out 2527 ms 54612 KB Time limit exceeded
7 Halted 0 ms 0 KB -