답안 #1022829

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1022829 2024-07-14T05:57:39 Z vjudge1 메기 농장 (IOI22_fish) C++17
0 / 100
1000 ms 2097152 KB
#include "fish.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back
#define F first
#define S second
#define all(v) v.begin(),v.end()
#define sz(s) (int)s.size()
#define lb lower_bound
#define ub upper_bound

const int MAX=2e5+10;

vector<pair<ll,ll>> y[MAX];
vector<ll> p[MAX];
vector<vector<ll>> dp[MAX];
vector<ll> can[MAX];

ll getSum(int x,ll l,ll r){
    if(l>r)return 0;
    int L=lb(all(y[x]),make_pair(l,0ll))-y[x].begin();
    int R=ub(all(y[x]),make_pair(r+1,0ll))-y[x].begin()-1;
    if(L<=R){
        if(L==0)return p[x][R];
        return p[x][R]-p[x][L-1];
    }
    return 0;
}

long long max_weights(int N, int M, vector<int> X, vector<int> Y,vector<int> W) {
    for(int i=0;i<M;i++){
        X[i]++;
        Y[i]++;
        y[X[i]].pb({Y[i],i});
    }
    for(int i=1;i<=N;i++){
        if(y[i].empty())continue;
        sort(all(y[i]));
        p[i].pb(W[y[i][0].S]);
        for(int j=1;j<sz(y[i]);j++){
            p[i].pb(p[i].back()+W[y[i][j].S]);
        }
    }
    // cout<<y[5][0].F<<"\n";
    can[0].pb(0);
    can[N+1].pb(0);
    for(int i=1;i<=N;i++){
        can[i].pb(0);
        if(i>0){
            for(auto [x,b]:y[i-1])can[i].pb(x);
        }
        if(i+1<=N){
            for(auto [x,b]:y[i+1])can[i].pb(x);
        }
        sort(all(can[i]));
        can[i].erase(unique(all(can[i])),can[i].end());
    }
    // cout<<can[4].back()<<"\n";
    for(int i=1;i<=N+1;i++){
        dp[i].resize(sz(can[i]));
        for(int j=0;j<sz(dp[i]);j++){
            dp[i][j].resize(sz(can[i-1]));
            for(int k=0;k<sz(can[i-1]);k++){
                dp[i][j][k]=0;
            }
        }
    }
    for(int i=1;i<=N;i++){
        for(int j=0;j<sz(can[i]);j++){
            for(int k=0;k<sz(can[i-1]);k++){
                int r=ub(all(y[i]),make_pair(can[i][j],0ll))-y[i].begin();
                ll sum=0;
                for(int f=0;f<sz(can[i+1]);f++){
                    ll nxt=dp[i][j][k];
                    {
                        int mx=max(can[i+1][f],can[i-1][k]);
                        while(r<sz(y[i])&&y[i][r].F<=mx){
                            sum+=W[y[i][r].S];
                            r++;
                        }
                        nxt+=sum;
                    }
                    dp[i+1][f][j]=max(dp[i+1][f][j],nxt);
                }
            }
        }
    }
    ll ans=0;
    for(int j=0;j<sz(can[N]);j++)ans=max(ans,dp[N+1][0][j]);
    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 53 ms 38452 KB Output is correct
2 Correct 62 ms 41920 KB Output is correct
3 Correct 22 ms 28504 KB Output is correct
4 Correct 23 ms 28508 KB Output is correct
5 Execution timed out 1029 ms 91304 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 19036 KB Output is correct
2 Runtime error 916 ms 2097152 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 28508 KB Output is correct
2 Correct 22 ms 28392 KB Output is correct
3 Incorrect 48 ms 36572 KB 1st lines differ - on the 1st token, expected: '21261825233649', found: '26722970331638'
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 19036 KB Output is correct
2 Correct 9 ms 19036 KB Output is correct
3 Correct 8 ms 19036 KB Output is correct
4 Correct 9 ms 19036 KB Output is correct
5 Correct 8 ms 19036 KB Output is correct
6 Correct 9 ms 19168 KB Output is correct
7 Correct 9 ms 19232 KB Output is correct
8 Correct 8 ms 19108 KB Output is correct
9 Incorrect 8 ms 19292 KB 1st lines differ - on the 1st token, expected: '216624184325', found: '220242990393'
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 19036 KB Output is correct
2 Correct 9 ms 19036 KB Output is correct
3 Correct 8 ms 19036 KB Output is correct
4 Correct 9 ms 19036 KB Output is correct
5 Correct 8 ms 19036 KB Output is correct
6 Correct 9 ms 19168 KB Output is correct
7 Correct 9 ms 19232 KB Output is correct
8 Correct 8 ms 19108 KB Output is correct
9 Incorrect 8 ms 19292 KB 1st lines differ - on the 1st token, expected: '216624184325', found: '220242990393'
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 19036 KB Output is correct
2 Correct 9 ms 19036 KB Output is correct
3 Correct 8 ms 19036 KB Output is correct
4 Correct 9 ms 19036 KB Output is correct
5 Correct 8 ms 19036 KB Output is correct
6 Correct 9 ms 19168 KB Output is correct
7 Correct 9 ms 19232 KB Output is correct
8 Correct 8 ms 19108 KB Output is correct
9 Incorrect 8 ms 19292 KB 1st lines differ - on the 1st token, expected: '216624184325', found: '220242990393'
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 28508 KB Output is correct
2 Correct 22 ms 28392 KB Output is correct
3 Incorrect 48 ms 36572 KB 1st lines differ - on the 1st token, expected: '21261825233649', found: '26722970331638'
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 53 ms 38452 KB Output is correct
2 Correct 62 ms 41920 KB Output is correct
3 Correct 22 ms 28504 KB Output is correct
4 Correct 23 ms 28508 KB Output is correct
5 Execution timed out 1029 ms 91304 KB Time limit exceeded
6 Halted 0 ms 0 KB -