Submission #1513533
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
typedef pair<int,P> P1;
typedef pair<P,P> P2;
#define pu push
#define pb push_back
#define mp make_pair
#define eps 1e-7
#define INF 1000000000
#define fi first
#define sc second
#define rep(i,x) for(int i=0;i<x;i++)
#define SORT(x) sort(x.begin(),x.end())
#define ERASE(x) x.erase(unique(x.begin(),x.end()),x.end())
#define POSL(x,v) (lower_bound(x.begin(),x.end(),v)-x.begin())
#define POSU(x,v) (upper_bound(x.begin(),x.end(),v)-x.begin())
int n,m;
ll c[5005],e[5005][205];
ll ans;
struct segtree{
int seg[(1<<14)];
void init(int a,int x){
a += (1<<13)-1; seg[a] = x;
while(a){
a=(a-1)/2;
seg[a] = max(seg[a*2+1],seg[a*2+2]);
}
}
int query(int a,int b,int k,int l,int r){
if(r<a||b<l) return 0;
if(a<=l&&r<=b) return seg[k];
return max(query(a,b,k*2+1,l,(l+r)/2),query(a,b,k*2+2,(l+r)/2+1,r));
}
}S[205];
pair<ll,int> score(int L,int R,int RR){
ll y[205];
pair<ll,int> X = mp(-1e18,0);
ll sum = 0;
for(int i=1;i<=m;i++){
y[i] = S[i].query(L,R,0,0,(1<<13)-1);
sum += y[i];
}
X = max(X,mp(sum+c[L-1]-c[R-1],R));
for(int i=R+1;i<=RR;i++){
for(int j=1;j<=m;j++){
if(y[j] < e[i][j]){
sum += e[i][j]-y[j];
y[j] = e[i][j];
}
}
X = max(X,mp(sum+c[L-1]-c[i-1],i));
}
return X;
}
void go(int L,int R,int a,int b){
if(L>R || a>b) return;
int mid = (L+R)/2;
int p[205]={};
pair<ll,int> X = mp(-1e18,0);
for(int x=a;x<=b;x++){
if(x>=mid){
X = max(X,score(mid,x,b));
break;
}
}
ans = max(ans,X.fi);
go(L,mid-1,a,X.sc);
go(mid+1,R,X.sc,b);
}
int main(){
cin >> n >> m;
for(int i=1;i<n;i++) scanf("%lld",&c[i]);
for(int i=2;i<n;i++) c[i] += c[i-1];
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){
scanf("%lld",&e[i][j]); S[j].init(i,e[i][j]);
}
go(1,n,1,n);
cout << ans << endl;
}
Submission Info
Submission Time |
|
Task |
F - Yakiniku Restaurants |
User |
IH19980412 |
Language |
C++14 (GCC 5.4.1) |
Score |
1000 |
Code Size |
1924 Byte |
Status |
AC |
Exec Time |
299 ms |
Memory |
20992 KB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:74:42: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
for(int i=1;i<n;i++) scanf("%lld",&c[i]);
^
./Main.cpp:77:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld",&e[i][j]); S[j].init(i,e[i][j]);
^
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
1000 / 1000 |
Status |
|
|
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 |
2 ms |
2432 KB |
sample_02.txt |
AC |
2 ms |
2304 KB |
subtask_1_dense_max_01.txt |
AC |
280 ms |
20992 KB |
subtask_1_dense_max_02.txt |
AC |
287 ms |
20992 KB |
subtask_1_dense_max_03.txt |
AC |
281 ms |
20992 KB |
subtask_1_dense_max_04.txt |
AC |
289 ms |
20992 KB |
subtask_1_dense_rand_01.txt |
AC |
177 ms |
19968 KB |
subtask_1_dense_rand_02.txt |
AC |
193 ms |
19968 KB |
subtask_1_dense_rand_03.txt |
AC |
8 ms |
4864 KB |
subtask_1_dense_rand_04.txt |
AC |
41 ms |
9472 KB |
subtask_1_max_01.txt |
AC |
255 ms |
20992 KB |
subtask_1_max_02.txt |
AC |
254 ms |
20992 KB |
subtask_1_max_03.txt |
AC |
255 ms |
20992 KB |
subtask_1_max_04.txt |
AC |
255 ms |
20992 KB |
subtask_1_min_01.txt |
AC |
1 ms |
2304 KB |
subtask_1_min_02.txt |
AC |
2 ms |
2304 KB |
subtask_1_rand_01.txt |
AC |
45 ms |
15360 KB |
subtask_1_rand_02.txt |
AC |
19 ms |
7424 KB |
subtask_1_rand_03.txt |
AC |
45 ms |
11264 KB |
subtask_1_rand_04.txt |
AC |
41 ms |
12160 KB |
subtask_1_widemax_01.txt |
AC |
286 ms |
20992 KB |
subtask_1_widemax_02.txt |
AC |
288 ms |
20992 KB |
subtask_1_widemax_03.txt |
AC |
287 ms |
20992 KB |
subtask_1_widemax_04.txt |
AC |
293 ms |
20992 KB |
subtask_1_widemax_05.txt |
AC |
288 ms |
20992 KB |
subtask_1_widemax_06.txt |
AC |
286 ms |
20992 KB |
subtask_1_widemax_07.txt |
AC |
299 ms |
20992 KB |
subtask_1_widemax_08.txt |
AC |
271 ms |
20992 KB |
subtask_1_widemax_09.txt |
AC |
292 ms |
20992 KB |
subtask_1_widemax_10.txt |
AC |
283 ms |
20992 KB |