Submission #470812

# Submission time Handle Problem Language Result Execution time Memory
470812 2021-09-05T19:47:49 Z robell Raisins (IOI09_raisins) C++14
25 / 100
5000 ms 340 KB
#pragma GCC optimize("O2")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef tree<int,null_type,less<int>,rb_tree_tag, tree_order_statistics_node_update> indexed_set;
typedef long long ll;
#define pb push_back
#define eb emplace_back
#define countbits __builtin_popcount
#define beg0 __builtin_clz
#define terminal0 __builtin_ctz
#define mod 1e9+7
void setIO(){
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
}
void setIO(string f){
	freopen((f+".in").c_str(),"r",stdin);
	freopen((f+".out").c_str(),"w",stdout);
	setIO();
}
int N, M;
int g[50][50];
ll p[50][50];
ll findSum(pair<int,int> b, pair<int,int> t){
	ll sum = p[t.first][t.second];
	if (b.second) sum-=p[t.first][b.second-1];
	if (b.first) sum-=p[b.first-1][t.second];
	if (b.second&&b.first) sum+=p[b.first-1][b.second-1];
	return sum;
}
ll checkStruct(pair<int,int> b, pair<int,int> t){
	ll totmin = 1e18;
	for (int i=b.first;i<t.first;i++){
		totmin=min(totmin,checkStruct({b.first,b.second},{i,t.second})+checkStruct({i+1,b.second},{t.first,t.second}));
	}
	for (int i=b.second;i<t.second;i++){
		totmin=min(totmin,checkStruct({b.first,b.second},{t.first,i})+checkStruct({b.first,i+1},{t.first,t.second}));
	}
	if (totmin==1e18){
		return 0;
	}else{
		return findSum(b,t)+totmin;
	}
}
int main(){
	setIO();
	cin >> N >> M;
	for (int i=0;i<N;i++){
		for (int j=0;j<M;j++){
			cin >> g[i][j];
		}
	}
	for (int i=0;i<N;i++){
		for (int j=0;j<M;j++){
			p[i][j]=g[i][j];
			if (i) p[i][j]+=p[i-1][j];
			if (j) p[i][j]+=p[i][j-1];
			if (i&&j) p[i][j]-=p[i-1][j-1];
		}
	}
	cout << checkStruct({0,0},{N-1,M-1}) << "\n";
}

Compilation message

raisins.cpp: In function 'void setIO(std::string)':
raisins.cpp:19:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |  freopen((f+".in").c_str(),"r",stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
raisins.cpp:20:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |  freopen((f+".out").c_str(),"w",stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 121 ms 304 KB Output is correct
6 Execution timed out 5023 ms 204 KB Time limit exceeded
7 Execution timed out 5081 ms 204 KB Time limit exceeded
8 Execution timed out 5031 ms 332 KB Time limit exceeded
9 Execution timed out 5084 ms 332 KB Time limit exceeded
10 Execution timed out 5087 ms 332 KB Time limit exceeded
11 Execution timed out 5044 ms 332 KB Time limit exceeded
12 Execution timed out 5095 ms 332 KB Time limit exceeded
13 Execution timed out 5098 ms 332 KB Time limit exceeded
14 Execution timed out 5092 ms 332 KB Time limit exceeded
15 Execution timed out 5087 ms 332 KB Time limit exceeded
16 Execution timed out 5091 ms 340 KB Time limit exceeded
17 Execution timed out 5095 ms 316 KB Time limit exceeded
18 Execution timed out 5085 ms 332 KB Time limit exceeded
19 Execution timed out 5079 ms 332 KB Time limit exceeded
20 Execution timed out 5095 ms 332 KB Time limit exceeded