Submission #1238844

#TimeUsernameProblemLanguageResultExecution timeMemory
1238844adriines06Catfish Farm (IOI22_fish)C++20
0 / 100
969 ms2162688 KiB
#include "fish.h"
#include<bits/stdc++.h>
#include <vector>
using namespace std;
long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,
                      std::vector<int> W) {
  vector<int>x(M+1),y(M+1);
  vector<vector<int>>w(N+2,vector<int>(N+2,0));
  vector<vector<int>>dp(N+2,vector<int>(N+2,0));
  for(int i=0;i<M;i++){
    x[i+1]=X[i]+1;
    y[i+1]=Y[i]+1;
  }
   for(int k=1;k<=M;k++){
    int i=x[k], j=y[k];
    w[i][j]=W[k-1];
  }
  for(int i=1;i<=N;i++){
    for(int j=1;j<=N;j++){
      w[i][j]+=w[i][j-1];
    }
  }

  for(int i=1;i<=1;i++){
    for(int j=1;j<=N;j++){
      int si=w[i-1][j]+w[i+1][j];//ambos
      dp[i][j]=max(si-dp[i-1][j],dp[i][j]);
      dp[i][j]=max(dp[i-1][j]-w[i][j]+w[i+1][j],dp[i][j]); //solo derecha
      dp[i][j]=max(dp[i][j-1],dp[i][j]); //abajo
    }
  }
  for(int i=2;i<=N;i++){
    for(int j=1;j<=N;j++){
      int si=w[i-1][j]+w[i+1][j];//ambos
      dp[i][j]=max(si-dp[i-1][j]+w[i][j],dp[i][j]);
      //cout<<"1 "<<si-dp[i-1][j]+w[i][j]<<"\n";
      dp[i][j]=max(dp[i-1][j]-w[i][j]+w[i+1][j],dp[i][j]); //solo derecha
      //cout<<"2 "<<dp[i-1][j]-w[i][j]+w[i+1][j]<<"\n";
      dp[i][j]=max(dp[i][j-1],dp[i][j]); //abajo
      dp[i][j]=max(dp[i-1][j],dp[i][j]); //lado
      //cout<<"3 "<<dp[i][j-1]<<"\n";
    }
  }
  for(auto v: dp){
    //for(int x: v) cout<<x<<" ";
    //cout<<"\n";
  }

  return dp[N][N];
}
#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...