Submission #1070745

# Submission time Handle Problem Language Result Execution time Memory
1070745 2024-08-22T17:41:45 Z beaconmc Catfish Farm (IOI22_fish) C++17
0 / 100
1000 ms 305376 KB
    // #pragma GCC optimize("O3,unroll-loops")
    // #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
    #include "fish.h"
     
    #include <bits/stdc++.h>
    using namespace std;
     
    typedef long long ll;
    #define FOR(i,x,y) for(ll i=x; i<y; i++)
    #define FORNEG(i,x,y) for(ll i=x; i>y; i--)
     
    const ll maxn = 3005;
     
     
    bool fish[maxn][maxn];
    ll weights[maxn][maxn];
     
    ll p[maxn][maxn];
     
     
     
    ll dp[maxn][maxn][2];
     
    ll pref[maxn][maxn][2];
    ll pref2[maxn][maxn][2];
    ll suff[maxn][maxn][2];
     
     
    long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,
                          std::vector<int> W) {
     
     
        FOR(i,1,M){
            Y[i]++;
            fish[X[i]][Y[i]] = true;
            weights[X[i]][Y[i]] = W[i];
        }
        FOR(i,0,maxn){
            p[i][0] = 0;
            FOR(j,1,maxn){
                p[i][j] = p[i][j-1] + weights[i][j];
            }
        }
     
        FOR(i,0,N+1){
            FOR(j,0,N+1){
                FOR(k,0,2){
     
     
                    if (i<2) continue;
                    ll temp = 0;
                    ll add = 0;
                    if (k==0){
                        temp = max(temp, suff[i-1][j+1][0] - p[i-1][j]);
                        temp = max(temp, suff[i-1][j+1][1] - p[i-1][j]);
                        // FOR(p,j+1,N+1){
                        //     if (fish[i-1][p]) add += weights[i-1][p];
                        //     temp = max(temp, dp[i-1][p][0] + add);
                        //     temp = max(temp, dp[i-1][p][1] + add);
                        // }
                    }else{
                        temp = max(temp, pref[i-1][j][0]);
                        temp = max(temp, pref[i-1][j][1] + p[i-2][j]);
                        // FOR(p,0,j+1) if (fish[i-2][p]) add += weights[i-2][p];
                        // FOR(p,0,j+1){
                        //     if (fish[i-2][p]) add -= weights[i-2][p];
                        //     temp = max(temp, dp[i-1][p][0]);
                        //     temp = max(temp, dp[i-1][p][1] + add);
                        // }
                    }
                    dp[i][j][k] = temp;
                }
            }
     
            FOR(k,0,2){
                ll tempadd = 0;
                ll tempadd2 = 0;
     
     
                FOR(j,0,N+1){
                    tempadd += weights[i][j];
                    suff[i][j][k] = dp[i][j][k]+tempadd;
                }
     
                FOR(j,0,N+1){
                    if (i>1) tempadd2 -= weights[i-1][j];
                    pref[i][j][k] = dp[i][j][k] + tempadd2;
                    pref2[i][j][k] = dp[i][j][k];
                }
     
                FOR(j,1,N+1){
                    pref[i][j][k] = max(pref[i][j][k], pref[i][j-1][k]);
                    pref2[i][j][k] = max(pref2[i][j][k], pref2[i][j-1][k]);
                }
     
                FORNEG(j,N,-1){
                    suff[i][j][k] = max(suff[i][j][k], suff[i][j+1][k]);
                }
            }
     
        }
     
     
        ll ans = 0;
        FOR(i,0,N+1) FOR(j,0,N+1)FOR(k,0,2){
            //if (dp[i][j][k]==305) cout << i << " " << j << " " << k << endl;
            ans = max(ans, dp[i][j][k]);
        }
        return ans;
     
     
     
     
     
     
     
    }

Compilation message

fish.cpp: In function 'long long int max_weights(int, int, std::vector<int>, std::vector<int>, std::vector<int>)':
fish.cpp:52:24: warning: unused variable 'add' [-Wunused-variable]
   52 |                     ll add = 0;
      |                        ^~~
# Verdict Execution time Memory Grader output
1 Execution timed out 1085 ms 305376 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 12 ms 74328 KB 1st lines differ - on the 1st token, expected: '2', found: '1'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1064 ms 269076 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 13 ms 74328 KB 1st lines differ - on the 1st token, expected: '3', found: '2'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 13 ms 74328 KB 1st lines differ - on the 1st token, expected: '3', found: '2'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 13 ms 74328 KB 1st lines differ - on the 1st token, expected: '3', found: '2'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1064 ms 269076 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1085 ms 305376 KB Time limit exceeded
2 Halted 0 ms 0 KB -