제출 #940586

#제출 시각아이디문제언어결과실행 시간메모리
940586Ghetto메기 농장 (IOI22_fish)C++17
6 / 100
79 ms30292 KiB
#include "fish.h"
#include <bits/stdc++.h>
using namespace std;
using lint = long long;
const int MAX_N = 1e5 + 5, MAX_M = 3e5 + 5;

int n, m;
int x[MAX_M], y[MAX_M];
lint w[MAX_M];

lint w_at[2][MAX_N];
lint w_sum[2][MAX_N];
void precomp() {
    for (int i = 0; i < m; i++)
        w_at[x[i]][y[i]] = w[i];

    for (int i = 0; i <= 1; i++)
        for (int j = 0; j < n; j++)
            w_sum[i][j] = w_at[i][j] + ((j == 0) ? 0 : w_sum[i][j - 1]);
}

void init() {
    for (int i = 0; i <= 1; i++)
        for (int j = 0; j < n; j++)
            w_at[i][j] = 0;
}

lint max_weights(int tmp_n, int tmp_m, vector<int> tmp_x, vector<int> tmp_y, vector<int> tmp_w) {
    n = tmp_n; 
    m = tmp_m;
    init();
    for (int i = 0; i < m; i++) {
        x[i] = tmp_x[i];
        y[i] = tmp_y[i];
        w[i] = tmp_w[i];
    }

    precomp();

    if (n == 2) {
        lint ans = max(w_sum[0][n - 1], w_sum[1][n - 1]);
        return ans;
    }

    lint ans = w_sum[1][n - 1];
    for (int j = 0; j < n; j++) {
        lint new_ans = w_sum[1][n - 1] - w_sum[1][j] + w_sum[0][j];
        ans = max(ans, new_ans);
    }   
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...