Submission #629456

# Submission time Handle Problem Language Result Execution time Memory
629456 2022-08-14T13:54:31 Z jh05013 Catfish Farm (IOI22_fish) C++17
0 / 100
765 ms 2097152 KB
#include <bits/stdc++.h>
using namespace std;
void OJize(){cin.tie(NULL);ios_base::sync_with_stdio(false);}

typedef long long ll;
const int IINF = 0x3f3f3f3f;
const ll LINF = 0x3f3f3f3f3f3f3f3f;
#define sz(X) (int)((X).size())
#define entire(X) X.begin(),X.end()
template <class T1, class T2>ostream&operator<<(ostream &os,pair<T1,T2>const&x){os<<'('<<x.first<<", "<<x.second<<')';return os;}
template <class Ch, class Tr, class Container>basic_ostream<Ch,Tr>&operator<<(basic_ostream<Ch,Tr>&os,Container const&x){os<<"[ ";for(auto&y:x)os<<y<<" ";return os<<"]";}

ll max_weights(int L, int n,
vector<int> X, vector<int> Y, vector<int> W){
	vector<vector<ll>> grid(L, vector<ll>(L+1));
	for(int i=0; i<n; i++) grid[X[i]][Y[i]] = (ll)W[i];

	vector<ll> dinc(L+1), ddec(L+1);
	// column _,
	// last column height j,
	// next will increase/decrease
	for(int i=1; i<L; i++){
		vector<ll> ndinc(L+1), nddec(L+1);
		ndinc[0] = nddec[0] = ddec[0];
		ndinc[L] = nddec[L] = dinc[L];
		for(int y=0; y<=L; y++){
			if(!(y == L || y == 0 || grid[i][y])) continue;
			for(int y0=0; y0<y; y0++){ // inc
				if(!(y0 == L || y0 == 0 || grid[i-1][y0])) continue;
				// take [i-1][y0 to y-1]
				ll val = dinc[y0];
				for(int z=y0; z<y; z++) val+= grid[i-1][z];
				ndinc[y] = max(ndinc[y], val);
				if(y == L) nddec[y] = max(nddec[y], val);
			}
			for(int y0=y+1; y0<=L; y0++){ // dec
				if(!(y0 == L || y0 == 0 || grid[i-1][y0])) continue;
				// take [i][y to y0-1]
				ll val = ddec[y0];
				for(int z=y; z<y0; z++) val+= grid[i][z];
				nddec[y] = max(nddec[y], val);
			}
		}
		dinc = ndinc, ddec = nddec;
		cout<<dinc<<ddec<<endl;
	}

	return max(
		*max_element(entire(dinc)),
		*max_element(entire(ddec))
	);
}

#ifdef jh
int main(){OJize();
	int n; cin>>n;
	vector<int> X, Y, W;
	for(int i=0; i<n; i++) for(int j=0; j<n; j++){
		int x; cin>>x;
		if(x){
			X.push_back(j);
			Y.push_back(n-1-i);
			W.push_back(x);
		}
	}
	cout << max_weights(n, sz(X), X, Y, W);
}
#endif
# Verdict Execution time Memory Grader output
1 Runtime error 765 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 212 KB Possible tampering with the output
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 733 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 212 KB Possible tampering with the output
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 212 KB Possible tampering with the output
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 212 KB Possible tampering with the output
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 733 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 765 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -