제출 #770374

#제출 시각아이디문제언어결과실행 시간메모리
770374jlallas384메기 농장 (IOI22_fish)C++17
컴파일 에러
0 ms0 KiB
#include "fish.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int INF = 1e9 + 5;

long long max_weights(int n, int m, vector<int> x, vector<int> y,
                      vector<int> w) { 
    vector<vector<pair<int,int>>> g(n + 2, vector<pair<int,int>>(1, {0,0}));
    vector<vector<int>> pts(n + 2, vector<int>(1, 0));
    for(int i = 0; i < m; i++){
        g[x[i] + 1].emplace_back(y[i] + 1, w[i]);
        if(x[i] != 0) pts[x[i]].push_back(y[i] + 1);
        pts[x[i] + 2].push_back(y[i] + 1);
    }
    for(int i = 0; i <= n + 1; i++){
        sort(g[i].begin(), g[i].end());
        sort(pts[i].begin(), pts[i].end());
        pts[i].resize(unique(pts[i].begin(), pts[i].end()) - pts[i].begin());
    }
    vector<vector<ll>> sums(n + 2);
    for(int i = 0; i <= n + 1; i++){
        for(auto [j, x]: g[i]){
            sums[i].push_back(x + (sums[i].empty() ? 0 : sums[i].back()));
        }
    }
    vector<vector<ll>> dpl(n + 1);
    vector<vector<ll>> dpr(n + 1);
    vector<vector<ll>> dpr2(n + 1);
    vector<vector<ll>> ans(n + 1);
    dpl[0].push_back(0);
    dpr[0].push_back(0);
    ll fans = 0;
    for(int col = 1; col <= n; col++){
        for(int row: pts[col]){
            ll ans = 0;

            auto it = prev(upper_bound(g[col].begin(), g[col].end(), make_pair(row, INF)));
            ll sumUp = sums[col].back() - sums[col][it - g[col].begin()];
            it = prev(upper_bound(g[col - 1].begin(), g[col - 1].end(), make_pair(row, INF)));
            ll removeLeft = sums[col - 1].back() - sums[col - 1][it - g[col - 1].begin()];

            auto it2 = prev(upper_bound(pts[col - 1].begin(), pts[col - 1].end(), row));

            // left to left
            if(row == 0){
                dpl[col].push_back(dpl[col - 1][it2 - pts[col - 1].begin()] + sumUp - removeLeft);
            }else{
                dpl[col].push_back(max(dpl[col].back(), dpl[col - 1][it2 - pts[col - 1].begin()] + sumUp - removeLeft));
            }

            //left to right
            it = prev(upper_bound(g[col + 1].begin(), g[col + 1].end(), make_pair(row, INF)));
            ll rsum = sums[col + 1][it - g[col + 1].begin()];
            dpr[col].push_back(dpl[col - 1][it2 - pts[col - 1].begin()] - removeLeft + rsum);

            // right to right
            it = prev(upper_bound(g[col].begin(), g[col].end(), make_pair(row, INF)));
            it2 = lower_bound(pts[col - 1].begin(), pts[col - 1].end(), row);
            if(it2 != pts[col - 1].end()){
                dpr[col].back() = max(dpr[col].back(), dpr[col - 1][it2 - pts[col - 1].begin()] + rsum - sums[col][it - g[col].begin()] + 1);
            }

            dpr2[col].push_back(dpr[col].back() - rsum)
            fans = max(fans, dpr[col].back());
        }
    }
    return fans;
}


컴파일 시 표준 에러 (stderr) 메시지

fish.cpp: In function 'long long int max_weights(int, int, std::vector<int>, std::vector<int>, std::vector<int>)':
fish.cpp:64:56: error: expected ';' before 'fans'
   64 |             dpr2[col].push_back(dpr[col].back() - rsum)
      |                                                        ^
      |                                                        ;
   65 |             fans = max(fans, dpr[col].back());
      |             ~~~~                                        
fish.cpp:36:16: warning: unused variable 'ans' [-Wunused-variable]
   36 |             ll ans = 0;
      |                ^~~