Skip to content

Commit 48798b8

Browse files
committed
srm 610 div 1 250
1 parent 9403627 commit 48798b8

File tree

2 files changed

+176
-0
lines changed

2 files changed

+176
-0
lines changed

TheMatrix.cpp

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
#include <iostream>
2+
#include <sstream>
3+
#include <vector>
4+
#include <algorithm>
5+
#include <set>
6+
#include <map>
7+
#include <queue>
8+
#include <cstring>
9+
#include <climits>
10+
#include <cstdio>
11+
using namespace std;
12+
typedef pair<int,int> pi;
13+
typedef set<int> si;
14+
typedef vector<int> vi;
15+
typedef vector<vi> vvi;
16+
typedef vector<string> vs;
17+
typedef long long ll;
18+
#define sz size()
19+
#define mp(x, y) make_pair(x, y)
20+
#define ri(a, b) for(int i=((int)(a)); i < ((int)(b)); i++) // i -> [a, b)
21+
#define rie(a, b) for(int i=((int)(a)); i <= ((int)(b)); i++) // i -> [a, b]
22+
#define rj(a, b) for(int j=((int)(a)); j < ((int)(b)); j++) // j -> [a, b)
23+
#define rje(a, b) for(int j=((int)(a)); j <= ((int)(b)); j++) // j -> [a, b]
24+
#define rk(a, b) for(int k=((int)(a)); k < ((int)(b)); k++) // k -> [a, b)
25+
#define rke(a, b) for(int k=((int)(a)); k <= ((int)(b)); k++) // k -> [a, b]
26+
#define fi(b) for(int i=0; i < ((int)(b)); i++) // i -> [0, b)
27+
#define fie(b) for(int i=0; i <= ((int)(b)); i++) // i -> [0, b]
28+
#define fj(b) for(int j=0; j < ((int)(b)); j++) // j -> [0, b)
29+
#define fje(b) for(int j=0; j <= ((int)(b)); j++) // j -> [0, b]
30+
#define fk(b) for(int k=0; k < ((int)(b)); k++) // k -> [0, b)
31+
#define fke(b) for(int k=0; k < ((int)(b)); k++) // k -> [0, b]
32+
#define fle(b) for(int l=0; l <= ((int)(b)); l++) // l -> [0, b]
33+
int n, m;
34+
#define valid(x, y) ( 0 <= (x) && (x) < n && 0 <= (y) && (y) < m )
35+
int dp[105][105][105];
36+
int M[105][105], C[105][105];
37+
38+
class TheMatrix{
39+
public:
40+
int MaxArea(vs board){
41+
n = board.size();
42+
m = board[0].size();
43+
// cout<<n<<" "<<m<<endl;
44+
45+
fi(n) fj(m){
46+
dp[i][j][j] = 1;
47+
M[i][j] = board[i][j] - '0';
48+
}
49+
50+
fi(n) fj(m) {
51+
C[i][j] = 1;
52+
rk(j+1, m){
53+
if(M[i][k] == M[i][k-1]) break;
54+
C[i][j]++;
55+
}
56+
}
57+
58+
int res = 0;
59+
fi(n){
60+
fj(m) {
61+
int t = C[i][j], y = t;
62+
rk(i+1, n){
63+
if(M[k][j] == M[k-1][j]) break;
64+
y = min(C[k][j], y);
65+
t = max(t, y*(k-i+1));
66+
}
67+
res = max(res, t);
68+
// cout<<t<<" ";
69+
}
70+
cout<<endl;
71+
}
72+
// cout<<"res = "<<res<<endl;
73+
return res;
74+
}
75+
76+
77+
// BEGIN CUT HERE
78+
public:
79+
void run_test(int Case) { if ((Case == -1) || (Case == 0)) test_case_0(); if ((Case == -1) || (Case == 1)) test_case_1(); if ((Case == -1) || (Case == 2)) test_case_2(); if ((Case == -1) || (Case == 3)) test_case_3(); if ((Case == -1) || (Case == 4)) test_case_4(); if ((Case == -1) || (Case == 5)) test_case_5(); if ((Case == -1) || (Case == 6)) test_case_6(); if ((Case == -1) || (Case == 7)) test_case_7(); }
80+
private:
81+
template <typename T> string print_array(const vector<T> &V) { ostringstream os; os << "{ "; for (typename vector<T>::const_iterator iter = V.begin(); iter != V.end(); ++iter) os << '\"' << *iter << "\","; os << " }"; return os.str(); }
82+
void verify_case(int Case, const int &Expected, const int &Received) { cerr << "Test Case #" << Case << "..."; if (Expected == Received) cerr << "PASSED" << endl; else { cerr << "FAILED" << endl; cerr << "\tExpected: \"" << Expected << '\"' << endl; cerr << "\tReceived: \"" << Received << '\"' << endl; } }
83+
void test_case_0() { string Arr0[] = {"1",
84+
"0"}; vector <string> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arg1 = 2; verify_case(0, Arg1, MaxArea(Arg0)); }
85+
void test_case_1() { string Arr0[] = {"0000"}; vector <string> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arg1 = 1; verify_case(1, Arg1, MaxArea(Arg0)); }
86+
void test_case_2() { string Arr0[] = {"01"}; vector <string> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arg1 = 2; verify_case(2, Arg1, MaxArea(Arg0)); }
87+
void test_case_3() { string Arr0[] = {"001",
88+
"000",
89+
"100"}; vector <string> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arg1 = 2; verify_case(3, Arg1, MaxArea(Arg0)); }
90+
void test_case_4() { string Arr0[] = {"0"}; vector <string> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arg1 = 1; verify_case(4, Arg1, MaxArea(Arg0)); }
91+
void test_case_5() { string Arr0[] = {"101",
92+
"010"}; vector <string> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arg1 = 6; verify_case(5, Arg1, MaxArea(Arg0)); }
93+
void test_case_6() { string Arr0[] = {"101",
94+
"011",
95+
"101",
96+
"010"}; vector <string> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arg1 = 8; verify_case(6, Arg1, MaxArea(Arg0)); }
97+
void test_case_7() { string Arr0[] = {"1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010001010101010101010101010101010101010101010101110101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101110101010101010101010101010101110101010101010", "1010101010101010101010101110101010101010101010101010101010101010101010101010101010101010100010101010", "1000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010001010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101000101010101010", "1010101010101010101010101010101010101010101010111010101010101010101010101000101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010111010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010111010101010101010101010100010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101011101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010100010101010101010101010101010101010101010101010101010100010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101000101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010001010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101110101010101010101010101010101010101010", "0010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010100110101010101010101010101010101010", "1010101010101110101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010111010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101110101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010001010101010101010001010101110101010101010", "1010101010101010101010101010101010101010101010101110101010101010101010101010111010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010001010101010101010101010101010101010", "1010101010101010101010101010101110101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101011101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010001010101010101010101010101010101010101010101010101110101010101010101010101010101010", "1010101010001010101010101010001010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010001010101010101010101010101010", "1010101010101011101010101010100010101010101010101010101010101010101010101010101010101010101010101010", "0010101011101010101010101110101010101010101010101000101010101010101010101010101010101010101010101010", "1010101010101010111010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010100010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010001010101010101010101010101010101010", "1010101010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010111010101000101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1110101010101010101010111010101010101000101010101010101010101010101011101010101010101010101010101010", "1010001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010111010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010111010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010111010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101110101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101011101010101010101010101010101010101010", "1010101010101010101010101010111010100010101010101010101010101010101010101010101010101010101110101010", "1010101010101010100010101010101010101010101010101010101010101010101010101010100010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010100011101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101110101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010111010001010101000101010101010101010101010101010101010101010101010", "1010101010101000101011101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010001010101010101010101011101010101010101010101010101010001010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101110101010101010101000101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101110101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101110101010101010101010101010101000101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101110101110101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010", "1010101010101010101010101010101010101010101010100010101010101010101010101010101010101010101010101010"}; vector <string> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0]))); int Arg1 = 12; verify_case(7, Arg1, MaxArea(Arg0)); }
98+
99+
// END CUT HERE
100+
101+
};
102+
103+
// BEGIN CUT HERE
104+
int main(){
105+
106+
TheMatrix ___test;
107+
___test.run_test(7);
108+
}
109+
// END CUT HERE

0 commit comments

Comments
 (0)