Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream cin("imagine.in");
- ofstream cout("imagine.out");
- const int lmax = 255;
- int l, ans, a[lmax][lmax];
- void read(){
- cin >> l;
- for(int i = 1; i <= l; i++)
- for(int j = 1; j <= l; j++)
- cin >> a[i][j];
- }
- void sum(){
- for(int i = 1; i <= l; i++)
- for(int j = 1; j <= l; j++)
- a[i][j] += a[i - 1][j] + a[i][j - 1] - a[i - 1][j - 1];
- }
- void solve(int l1, int l2, int c1, int c2){
- if(l1 == l2 && c1 == c2)
- ans += 2;
- else {
- int sm = a[l2][c2] - a[l1 - 1][c2] - a[l2][c1 - 1] + a[l1 - 1][c1 - 1];
- if(sm == 0)
- ans += 2;
- else if(sm == (l2 - l1 + 1) * (c2 - c1 + 1))
- ans += 2;
- else {
- ans += 1;
- int mdL = (l1 + l2) / 2;
- int mdC = (c1 + c2) / 2;
- solve(mdL + 1, l2, c1, mdC);//A
- solve(l1, mdL, c1, mdC);//B
- solve(mdL + 1, l2, mdC + 1, c2);//C
- solve(l1, mdL, mdC + 1, c2);//D
- }
- }
- }
- int main()
- {
- read();
- sum();
- solve(1, l, 1, l);
- cout << ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement