1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #include<bits/stdc++.h> using namespace std;
int main(){ int k,m,n; cin>>k>>m>>n; vector<int> a[55],ps[55];
for(int i=0;i<n;i++) ps[0].push_back(0); for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ int tmp;cin>>tmp; a[i].push_back(tmp); ps[i].push_back(tmp); } } for(int i=1;i<=m;i++){ for(int j=0;j<n;j++){ ps[i][j]+=ps[i-1][j]; } }
int best=0; for(int i=0;i<m;i++){ for(int j=i+1;j<=m;j++){ set<int> s({0}); int psum=0; for(int o=0;o<n;o++){ psum+=(ps[j][o]-ps[i][o]); auto it=s.lower_bound(psum-k); if(it!=s.end()){ best=max(best,psum-(*it)); } s.insert(psum); } } } cout<<best<<"\n"; return 0; }
|