All pastes #747458 Raw Edit

Mine

public cpp v1 · immutable
·published 2007-10-24 01:49 UTC
rendered paste body
/*ID: xo1LANG: C++TASK: paint2*/#include <stdio.h>int main () {    FILE *fin  = fopen ("paint2.in", "r");    FILE *fout = fopen ("paint2.out", "w");    int n, k;    fscanf (fin, "%d %d", &n, &k);    int x[k], y[k];    for ( int i = 0; i < k ; i++ )        fscanf (fin, "%d %d", &(x[i]), &(y[i]));    int grid[n][n];    for ( int i = 0; i < n ; i++ )        for ( int j = 0; j < n ; j++ )            grid[i][j] = 0;    for ( int i = 0; i < k ; i++ )        printf("%d %d\n", x[i], y[i]);    puts("");    for ( int i = 0; i < k ; i++ )        for ( int j = 0; j < n ; j++ ) {            grid[x[i]-1][j]++;        }    for ( int i = 0; i < k ; i++ )        for ( int j = 0; j < n ; j++ ) {            if ( j != x[i]-1 )                grid[j][y[i]-1]++;        }    {        int edgex[k], edgey[k];        for ( int i = 0; i < k ; i++ )            edgex[i] = x[i];        for ( int i = 0; i < k ; i++ )            edgey[i] = y[i];        for ( int i = 0; i < k ; i++ )            while (edgex[i] && edgey[i]) {                edgex[i]--;                edgey[i]--;            }        for ( int i = 0; i < k ; i++ )            for ( int j = 0; edgex[i]+j < n && edgey[i]+j < n ; j++ ) {                if (( edgex[i]-j != x[i]-1 ) && ( edgey[i]+j != y[i]-1 )) {                    //printf("%d %d\n", edgex[i]+j, edgex[i]+j);                    grid[edgex[i]+j][edgey[i]+j]++;                }            }        /*for ( int d = 0; d < k ; d++ )            printf("%d %d\n", x[i], y[i]);        puts("");*/    }    {        int edgex[k], edgey[k];        for ( int i = 0; i < k ; i++ )            edgex[i] = x[i];        for ( int i = 0; i < k ; i++ )            edgey[i] = y[i];        for ( int i = 0; i < k ; i++ )            while (edgex[i] < n && edgey[i]-1) {                edgex[i]++;                edgey[i]--;            }        /*for ( int i = 0; i < k ; i++ )            printf("%d %d\n", edgex[i], edgey[i]);        puts("");*/        for ( int i = 0; i < k ; i++ ) {            int q = edgex[i]-1, w = edgey[i]-1;            while ( q+1 && w < n ) {                if ( q != x[i]-1 && w != y[i]-1 ) {                    //printf("%d %d\n", q, w);                    grid[q][w]++;                }                q--;                w++;            }        }    }    for ( int i = 0; i < n ; i++ ) {        for ( int j = 0; j < n ; j++ )            printf("%d ", grid[i][j]);        puts("");    }    puts("");    int cnt = 0;    for ( int i = 0; i < n ; i++ ) {        for ( int j = 0; j < n ; j++ )            if ( grid[i][j] == k )                cnt++;    }    fprintf(fout, "%d\n", cnt);    return (0);}