SHOW:
|
|
- or go back to the newest paste.
| 1 | - | #include <bits/stdc++.h> |
| 1 | + | #include <bits/stdc++.h> |
| 2 | - | ///for ordered set/// |
| 2 | + | ///for ordered set/// |
| 3 | - | // #include <ext/pb_ds/assoc_container.hpp> |
| 3 | + | // #include <ext/pb_ds/assoc_container.hpp> |
| 4 | - | // #include <ext/pb_ds/trie_policy.hpp> |
| 4 | + | // #include <ext/pb_ds/trie_policy.hpp> |
| 5 | ||
| 6 | - | using namespace std; |
| 6 | + | using namespace std; |
| 7 | - | ///For ordered set/// |
| 7 | + | ///For ordered set/// |
| 8 | - | // using namespace __gnu_pbds; |
| 8 | + | // using namespace __gnu_pbds; |
| 9 | - | ///For ordered set/// |
| 9 | + | ///For ordered set/// |
| 10 | - | // typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>ordered_set; |
| 10 | + | // typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>ordered_set; |
| 11 | ||
| 12 | - | ///Compiler Optimizer/// |
| 12 | + | ///Compiler Optimizer/// |
| 13 | - | // #pragma GCC optimize("Ofast,no-stack-protector") |
| 13 | + | // #pragma GCC optimize("Ofast,no-stack-protector")
|
| 14 | - | // #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") |
| 14 | + | // #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
|
| 15 | - | // #pragma GCC optimize("unroll-loops") |
| 15 | + | // #pragma GCC optimize("unroll-loops")
|
| 16 | ||
| 17 | - | ///define/// |
| 17 | + | ///define/// |
| 18 | - | #define ll long long int |
| 18 | + | #define ll long long int |
| 19 | - | #define all(v) v.begin(),v.end() |
| 19 | + | #define all(v) v.begin(),v.end() |
| 20 | - | #define rall(v) v.rbegin(),v.rend() |
| 20 | + | #define rall(v) v.rbegin(),v.rend() |
| 21 | - | #define unq(s) sort(all(s)),(s).erase(unique(all(s)),s.end()) |
| 21 | + | #define unq(s) sort(all(s)),(s).erase(unique(all(s)),s.end()) |
| 22 | - | #define pb push_back |
| 22 | + | #define pb push_back |
| 23 | - | #define pob pop_back |
| 23 | + | #define pob pop_back |
| 24 | - | #define MP make_pair |
| 24 | + | #define MP make_pair |
| 25 | - | #define ff first |
| 25 | + | #define ff first |
| 26 | - | #define ss second |
| 26 | + | #define ss second |
| 27 | - | #define Log(b,x) (log(x)/log(b)) |
| 27 | + | #define Log(b,x) (log(x)/log(b)) |
| 28 | - | #define clr(a,x) memset(a,x,sizeof(a)) |
| 28 | + | #define clr(a,x) memset(a,x,sizeof(a)) |
| 29 | - | #define vout(v,sz) for(int w=0;w<sz;w++){if(w) spc; cout<<v[w];} |
| 29 | + | #define vout(v,sz) for(int w=0;w<sz;w++){if(w) spc; cout<<v[w];}
|
| 30 | - | ///IO/// |
| 30 | + | ///IO/// |
| 31 | - | #define sc scanf |
| 31 | + | #define sc scanf |
| 32 | - | #define pf printf |
| 32 | + | #define pf printf |
| 33 | - | #define cspf(i) pf("Case #%d: ", i) |
| 33 | + | #define cspf(i) pf("Case #%d: ", i)
|
| 34 | - | #define spc pf(" ") |
| 34 | + | #define spc pf(" ")
|
| 35 | - | #define line pf("\n") |
| 35 | + | #define line pf("\n")
|
| 36 | - | #define sc1(x) sc("%d", &x) |
| 36 | + | #define sc1(x) sc("%d", &x)
|
| 37 | - | #define sc2(x,y) sc("%d %d", &x, &y) |
| 37 | + | #define sc2(x,y) sc("%d %d", &x, &y)
|
| 38 | - | #define scl1(x) sc("%lld", &x) |
| 38 | + | #define scl1(x) sc("%lld", &x)
|
| 39 | - | #define pf1(x) pf("%d",x) |
| 39 | + | #define pf1(x) pf("%d",x)
|
| 40 | - | #define pfl1(x) pf("%lld",x) |
| 40 | + | #define pfl1(x) pf("%lld",x)
|
| 41 | - | #define fastIO ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr) |
| 41 | + | #define fastIO ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr) |
| 42 | - | ///constants/// |
| 42 | + | ///constants/// |
| 43 | - | #define MOD (int)(998244353) |
| 43 | + | #define MOD (int)(998244353) |
| 44 | - | #define MaxN 100000 |
| 44 | + | #define MaxN 100000 |
| 45 | - | #define inf 0x3f3f3f3f |
| 45 | + | #define inf 0x3f3f3f3f |
| 46 | - | #define PI acos(-1.0) // 3.1415926535897932 |
| 46 | + | #define PI acos(-1.0) // 3.1415926535897932 |
| 47 | - | #define eps 1e-6 |
| 47 | + | #define eps 1e-6 |
| 48 | ||
| 49 | - | #ifdef ERFANUL007 |
| 49 | + | #ifdef ERFANUL007 |
| 50 | - | #define debug(...) __f(#__VA_ARGS__, __VA_ARGS__) |
| 50 | + | #define debug(...) __f(#__VA_ARGS__, __VA_ARGS__) |
| 51 | - | template < typename Arg1 > |
| 51 | + | template < typename Arg1 > |
| 52 | - | void __f(const char* name, Arg1&& arg1){ |
| 52 | + | void __f(const char* name, Arg1&& arg1){
|
| 53 | - | cout << name << " = " << arg1 << std::endl; |
| 53 | + | cout << name << " = " << arg1 << std::endl; |
| 54 | - | } |
| 54 | + | } |
| 55 | - | template < typename Arg1, typename... Args> |
| 55 | + | template < typename Arg1, typename... Args> |
| 56 | - | void __f(const char* names, Arg1&& arg1, Args&&... args){ |
| 56 | + | void __f(const char* names, Arg1&& arg1, Args&&... args){
|
| 57 | - | const char* comma = strchr(names, ','); |
| 57 | + | const char* comma = strchr(names, ','); |
| 58 | - | cout.write(names, comma - names) << " = " << arg1 <<" | "; |
| 58 | + | cout.write(names, comma - names) << " = " << arg1 <<" | "; |
| 59 | - | __f(comma+1, args...); |
| 59 | + | __f(comma+1, args...); |
| 60 | - | } |
| 60 | + | } |
| 61 | - | #else |
| 61 | + | #else |
| 62 | - | #define debug(...) |
| 62 | + | #define debug(...) |
| 63 | - | #endif |
| 63 | + | #endif |
| 64 | ||
| 65 | - | template <class T> inline T bigMod(T p,T e,T M){T ret=1; for(;e>0;e>>=1){ if(e&1) ret=(ret*p)%M; p=(p*p)%M;} return (T)ret;} |
| 65 | + | template <class T> inline T bigMod(T p,T e,T M){T ret=1; for(;e>0;e>>=1){ if(e&1) ret=(ret*p)%M; p=(p*p)%M;} return (T)ret;}
|
| 66 | - | template <class T> inline T modInverse(T a,T M){return bigMod(a,M-2,M);} |
| 66 | + | template <class T> inline T modInverse(T a,T M){return bigMod(a,M-2,M);}
|
| 67 | - | template <class T> inline T gcd(T a,T b){if(b==0)return a;return gcd(b,a%b);} |
| 67 | + | template <class T> inline T gcd(T a,T b){if(b==0)return a;return gcd(b,a%b);}
|
| 68 | - | template <class T> inline T lcm(T a,T b) {a=abs(a);b=abs(b); return (a/gcd(a,b))*b;} |
| 68 | + | template <class T> inline T lcm(T a,T b) {a=abs(a);b=abs(b); return (a/gcd(a,b))*b;}
|
| 69 | ||
| 70 | - | int dx[] = { 1,-1, 0, 0}; //graph moves |
| 70 | + | int dx[] = { 1,-1, 0, 0}; //graph moves
|
| 71 | - | int dy[] = { 0, 0, 1,-1}; //graph moves |
| 71 | + | int dy[] = { 0, 0, 1,-1}; //graph moves
|
| 72 | ||
| 73 | - | |
| 73 | + | |
| 74 | - | int main() |
| 74 | + | int main() |
| 75 | - | { |
| 75 | + | {
|
| 76 | - | #ifdef ERFANUL007 |
| 76 | + | #ifdef ERFANUL007 |
| 77 | - | clock_t tStart = clock(); |
| 77 | + | clock_t tStart = clock(); |
| 78 | - | freopen("input.txt", "r", stdin); |
| 78 | + | freopen("input.txt", "r", stdin);
|
| 79 | - | freopen("output.txt", "w", stdout); |
| 79 | + | freopen("output.txt", "w", stdout);
|
| 80 | - | #endif |
| 80 | + | #endif |
| 81 | ||
| 82 | - | int n; sc1(n); |
| 82 | + | int n; sc1(n); |
| 83 | - | int grid[n+1][n+1], sum[n+1][n+1]; |
| 83 | + | int grid[n+1][n+1], sum[n+1][n+1]; |
| 84 | - | for(int i=0; i<=n; i++){ |
| 84 | + | for(int i=0; i<=n; i++){
|
| 85 | - | sum[i][0] = 0; |
| 85 | + | sum[i][0] = 0; |
| 86 | - | sum[0][i] = 0; |
| 86 | + | sum[0][i] = 0; |
| 87 | - | } |
| 87 | + | } |
| 88 | - | for(int i=1; i<=n; i++){ |
| 88 | + | for(int i=1; i<=n; i++){
|
| 89 | - | for(int j=1; j<=n; j++){ |
| 89 | + | for(int j=1; j<=n; j++){
|
| 90 | - | sc1(grid[i][j]); |
| 90 | + | sc1(grid[i][j]); |
| 91 | - | } |
| 91 | + | } |
| 92 | - | } |
| 92 | + | } |
| 93 | - | for(int i=1; i<=n; i++){ |
| 93 | + | for(int i=1; i<=n; i++){
|
| 94 | - | for(int j=1; j<=n; j++){ |
| 94 | + | for(int j=1; j<=n; j++){
|
| 95 | - | sum[i][j] = sum[i-1][j] + sum[i][j-1] + grid[i][j] - sum[i-1][j-1]; |
| 95 | + | sum[i][j] = sum[i-1][j] + sum[i][j-1] + grid[i][j] - sum[i-1][j-1]; |
| 96 | - | } |
| 96 | + | } |
| 97 | - | } |
| 97 | + | } |
| 98 | - | int ans = 0; |
| 98 | + | int ans = 0; |
| 99 | - | for(int i=1; i<=n; i++){ |
| 99 | + | for(int i=1; i<=n; i++){
|
| 100 | - | for(int j=1; j<=n; j++){ |
| 100 | + | for(int j=1; j<=n; j++){
|
| 101 | - | for(int k=i; k<=n; k++){ |
| 101 | + | for(int k=i; k<=n; k++){
|
| 102 | - | for(int l=j; l<=n; l++){ |
| 102 | + | for(int l=j; l<=n; l++){
|
| 103 | - | int val = sum[k][l] - sum[k][j-1] - sum[i-1][l] + sum[i-1][j-1]; |
| 103 | + | int val = sum[k][l] - sum[k][j-1] - sum[i-1][l] + sum[i-1][j-1]; |
| 104 | - | ans = max(ans, val); |
| 104 | + | ans = max(ans, val); |
| 105 | - | } |
| 105 | + | } |
| 106 | - | } |
| 106 | + | } |
| 107 | - | } |
| 107 | + | } |
| 108 | - | } |
| 108 | + | } |
| 109 | - | printf("%d\n", ans); |
| 109 | + | printf("%d\n", ans);
|
| 110 | - | |
| 110 | + | |
| 111 | ||
| 112 | - | #ifdef ERFANUL007 |
| 112 | + | #ifdef ERFANUL007 |
| 113 | - | fprintf(stderr, "\n>> Runtime: %.10fs\n", (double) (clock() - tStart) / CLOCKS_PER_SEC); |
| 113 | + | fprintf(stderr, "\n>> Runtime: %.10fs\n", (double) (clock() - tStart) / CLOCKS_PER_SEC); |
| 114 | - | #endif |
| 114 | + | #endif |
| 115 | - | |
| 115 | + | |
| 116 | - | return 0; |
| 116 | + | return 0; |
| 117 | - | } |
| 117 | + | } |
| 118 |