Submission #748443

# Submission time Handle Problem Language Result Execution time Memory
748443 2023-05-26T09:41:59 Z QwertyPi Catfish Farm (IOI22_fish) C++17
0 / 100
1000 ms 135392 KB
#include "fish.h"
#include <bits/stdc++.h>

#define pii pair<int, int>
#define fi first
#define se second
using namespace std;

const int N_MAX = 1e5 + 11;
const int INC = 0;
const int DEC = 1;

vector<pii> fish[N_MAX];
int N;

long long g(int x, int y){ // [x, x] times [0, y)
	if(x < 0 || x >= N) return 0;
	auto ptr = lower_bound(fish[x].begin(), fish[x].end(), pair<int, int>{y, -1});
	if(ptr == fish[x].begin()) return 0;
	return (--ptr)->se;
}

long long f(int x, int y0, int y1, int y2){ // (x - 1, y1) -> (x, y2) transition
	if(y1 >= y2){
		return g(x + 1, y2) - g(x, y2);
	}else{
		return g(x + 1, y2) - g(x, y1) + g(x - 1, y2) - g(x - 1, max(y0, y1));
	}
}

long long dp[501][501][501];

long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) {
	::N = N;
	for(int i = 0; i < M; i++){
		fish[X[i]].push_back({Y[i], W[i]});
	}
	for(int i = 0; i < N; i++){
		sort(fish[i].begin(), fish[i].end());
		for(int j = 1; j < fish[i].size(); j++){
			fish[i][j].se += fish[i][j - 1].se;
		}
	}
	
	for(int i = 0; i <= N; i++){
		for(int j = 0; j <= N; j++){
			for(int k = 0; k <= N; k++){
				dp[i][j][k] = -(1LL << 60);
			}
		}
	}
	dp[0][0][0] = 0;
	
	for(int x = 0; x < N; x++){
		for(int y1 = 0; y1 <= N; y1++){
			for(int y2 = 0; y2 <= N; y2++){
				for(int y3 = 0; y3 <= N; y3++){
					dp[x + 1][y2][y3] = max(dp[x + 1][y2][y3], dp[x][y1][y2] + f(x, y1, y2, y3));
				}
			}
		}
	}
	
	long long ans = 0;
	for(int y1 = 0; y1 <= N; y1++){
		for(int y2 = 0; y2 <= N; y2++){
			ans = max(ans, dp[N][y1][y2]);
		}
	}
	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:40:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |   for(int j = 1; j < fish[i].size(); j++){
      |                  ~~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Execution timed out 1077 ms 135392 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 2644 KB Output is correct
2 Execution timed out 1073 ms 133204 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1078 ms 119256 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 2772 KB Output is correct
2 Correct 2 ms 2900 KB Output is correct
3 Correct 2 ms 2644 KB Output is correct
4 Correct 2 ms 2660 KB Output is correct
5 Correct 2 ms 2588 KB Output is correct
6 Correct 3 ms 2644 KB Output is correct
7 Correct 2 ms 2660 KB Output is correct
8 Correct 2 ms 2644 KB Output is correct
9 Execution timed out 1089 ms 92560 KB Time limit exceeded
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 2772 KB Output is correct
2 Correct 2 ms 2900 KB Output is correct
3 Correct 2 ms 2644 KB Output is correct
4 Correct 2 ms 2660 KB Output is correct
5 Correct 2 ms 2588 KB Output is correct
6 Correct 3 ms 2644 KB Output is correct
7 Correct 2 ms 2660 KB Output is correct
8 Correct 2 ms 2644 KB Output is correct
9 Execution timed out 1089 ms 92560 KB Time limit exceeded
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 2772 KB Output is correct
2 Correct 2 ms 2900 KB Output is correct
3 Correct 2 ms 2644 KB Output is correct
4 Correct 2 ms 2660 KB Output is correct
5 Correct 2 ms 2588 KB Output is correct
6 Correct 3 ms 2644 KB Output is correct
7 Correct 2 ms 2660 KB Output is correct
8 Correct 2 ms 2644 KB Output is correct
9 Execution timed out 1089 ms 92560 KB Time limit exceeded
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1078 ms 119256 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1077 ms 135392 KB Time limit exceeded
2 Halted 0 ms 0 KB -