Cod sursa(job #1027273)

Utilizator invincibleInvincibilul invincible Data 12 noiembrie 2013 17:58:57
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>

int Ap[1007], D[1007][1007], n, a;

inline int min(int a, int b){
    if(a > b)
        return b;
    return a;
}

int main(){
    freopen("custi.in", "r", stdin);
    freopen("custi.out", "w", stdout);
    scanf("%d", &n);
    for(int i = 1; i <= n; ++ i)
        for(int j = 1; j <= n; ++ j){
            scanf("%d", &a);
            if(a == 0)
                D[i][j] = 0;
            else{
                D[i][j] = 1 + min(D[i - 1][j], D[i][j - 1]);
                D[i][j] = min(D[i][j], D[i - 1][j - 1] + 1);
                ++ Ap[D[i][j]];
            }
        }
    for(int i = n; i >= 1; -- i)
        Ap[i] += Ap[i + 1];
    for(int i = 1; i <= n; ++ i)
        printf("%d\n", Ap[i]);
    return 0;
}