Submission #11453060


Source Code Expand

#include<cstdio>
#include<algorithm>
#include<cctype>
#include<cstring>
#include<map>
#include<bitset>
#include<stack>
#include<queue>
#include<set>
#include<cmath>
#include<vector>

using namespace std;

#define bomb exit(1)
#define INF 1000000000
#define LINF 1000000000000000000ll
#define pprint(x) print(x),putchar(' ')
#define fprint(x) print(x),putchar('\n')
#define EE(x); struct edge { int nxt,to,w; }e[M << 1]; int head[N],cnt = x ^ 1;\
	void add(int u,int v,int w = 0) { e[++cnt].w = w,e[cnt].to = v,e[cnt].nxt = head[u];head[u] = cnt; }\
	void add_edge(int u,int v,int w = 0) { add(u,v,w),add(v,u,w * x); }
#define Mod(x) ((x) >= mod ? x - mod : x)
#define eps 0.00000001
#define sqr(x) ((x) * (x))
//#define getchar() (SS == TT && (TT = (SS = BB) + fread(BB,1,1 << 15,stdin),TT == SS) ? EOF : *SS++)
//char BB[1 << 15],*SS = BB,*TT = BB;
inline long long read()
{
	long long x = 0;int f = 1;char ch = getchar();
	for(;!isdigit(ch);ch = getchar()) if(ch == '-') f = -1;
	for(;isdigit(ch);ch = getchar()) x = x * 10 + (ch ^ 48);
	return x * f;
}
void print(long long x)
{
	if(x < 0) putchar('-'),x = -x;
	if(x > 9) print(x / 10);
	putchar(x % 10 + '0');
}
long long gcd(long long a,long long b) { return b ? gcd(b,a % b) : a; }

const int N = 5010,M = 300;
int n,m;
long long sum[N],f[N],ans;
int a[N][M],lg[N],st[M][N][20];
void init()
{
	for(int i = 1;i <= n;i++)
		for(int j = 1;j <= m;j++)
			st[j][i][0] = read();
	lg[0] = -1;
	for(int i = 1;i <= n;i++) lg[i] = lg[i >> 1] + 1;
	for(int p = 1;p <= m;p++)
		for(int j = 1;j < 20;j++)
			for(int i = 1;i <= n - (1 << j) + 1;i++)
				st[p][i][j] = max(st[p][i][j - 1],st[p][i + (1 << j - 1)][j - 1]);
}
int query(int i,int l,int r)
{
	int k = lg[r - l + 1];
	return max(st[i][l][k],st[i][r - (1 << k) + 1][k]);
}
void solve(int l,int r,int L,int R)
{
	if(l > r) return;
	int mid = l + r >> 1;
	long long ans = 0,pos;
	for(int i = L;i <= min(mid,R);i++)
	{
		long long now = sum[i] - sum[mid];
		for(int j = 1;j <= m;j++)
			now += query(j,i,mid);
		if(now > ans) ans = now,pos = i;
	}
	f[mid] = ans;
	solve(l,mid - 1,L,pos),solve(mid + 1,r,pos,R);
}

int main()
{
	n = read(),m = read();
	for(int i = 2;i <= n;i++) sum[i] = sum[i - 1] + read();
	init();
	solve(1,n,1,n);
	for(int i = 1;i <= n;i++) ans = max(ans,f[i]);
	fprint(ans);
	return 0;
}

Submission Info

Submission Time
Task F - Yakiniku Restaurants
User luogu_bot2
Language C++ (GCC 5.4.1)
Score 1000
Code Size 2395 Byte
Status AC
Exec Time 335 ms
Memory 81920 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1000 / 1000
Status
AC × 2
AC × 30
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All sample_01.txt, sample_02.txt, subtask_1_dense_max_01.txt, subtask_1_dense_max_02.txt, subtask_1_dense_max_03.txt, subtask_1_dense_max_04.txt, subtask_1_dense_rand_01.txt, subtask_1_dense_rand_02.txt, subtask_1_dense_rand_03.txt, subtask_1_dense_rand_04.txt, subtask_1_max_01.txt, subtask_1_max_02.txt, subtask_1_max_03.txt, subtask_1_max_04.txt, subtask_1_min_01.txt, subtask_1_min_02.txt, subtask_1_rand_01.txt, subtask_1_rand_02.txt, subtask_1_rand_03.txt, subtask_1_rand_04.txt, subtask_1_widemax_01.txt, subtask_1_widemax_02.txt, subtask_1_widemax_03.txt, subtask_1_widemax_04.txt, subtask_1_widemax_05.txt, subtask_1_widemax_06.txt, subtask_1_widemax_07.txt, subtask_1_widemax_08.txt, subtask_1_widemax_09.txt, subtask_1_widemax_10.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 2176 KB
sample_02.txt AC 1 ms 2176 KB
subtask_1_dense_max_01.txt AC 259 ms 81792 KB
subtask_1_dense_max_02.txt AC 263 ms 81792 KB
subtask_1_dense_max_03.txt AC 268 ms 81792 KB
subtask_1_dense_max_04.txt AC 268 ms 81792 KB
subtask_1_dense_rand_01.txt AC 162 ms 73088 KB
subtask_1_dense_rand_02.txt AC 173 ms 75264 KB
subtask_1_dense_rand_03.txt AC 6 ms 12800 KB
subtask_1_dense_rand_04.txt AC 26 ms 29568 KB
subtask_1_max_01.txt AC 240 ms 81792 KB
subtask_1_max_02.txt AC 241 ms 81792 KB
subtask_1_max_03.txt AC 239 ms 81792 KB
subtask_1_max_04.txt AC 239 ms 81920 KB
subtask_1_min_01.txt AC 1 ms 2176 KB
subtask_1_min_02.txt AC 1 ms 2176 KB
subtask_1_rand_01.txt AC 43 ms 70272 KB
subtask_1_rand_02.txt AC 12 ms 17280 KB
subtask_1_rand_03.txt AC 38 ms 47872 KB
subtask_1_rand_04.txt AC 25 ms 16128 KB
subtask_1_widemax_01.txt AC 329 ms 81792 KB
subtask_1_widemax_02.txt AC 329 ms 81792 KB
subtask_1_widemax_03.txt AC 309 ms 81792 KB
subtask_1_widemax_04.txt AC 335 ms 81792 KB
subtask_1_widemax_05.txt AC 321 ms 81792 KB
subtask_1_widemax_06.txt AC 324 ms 81792 KB
subtask_1_widemax_07.txt AC 317 ms 81792 KB
subtask_1_widemax_08.txt AC 314 ms 81792 KB
subtask_1_widemax_09.txt AC 328 ms 81792 KB
subtask_1_widemax_10.txt AC 327 ms 81792 KB