2013山东省第三届ACM省赛 The Best Seat in ACM Contest

来源:互联网 发布:平板电脑软件下载 编辑:程序博客网 时间:2024/05/06 12:42

题意:计算每个座位的value值,根据坐在该座位的队伍长度与其上下左右方向的四个队伍长度比较。若该位置的队伍长度比一个方向的长度大,则权值减去长度差的绝对值;反之则加长度差的绝对值。

#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};int main(){    int T;    int N,M;    int s[25][25];    int v[25][25];    int i,j;    int a,b;    int ma,ma_i,ma_j;    int ca=0;    int k;    scanf("%d",&T);    while(T--){        scanf("%d%d",&N,&M);        for(i=0;i<N;++i){            for(j=0;j<M;++j){                scanf("%d",&s[i][j]);            }        }        memset(v,0,sizeof(v));        for(i=0;i<N;++i){            for(j=0;j<M;++j){                for(k=0;k<4;++k){                    a=i+dir[k][0];                    b=j+dir[k][1];                    if(a<0||b<0||a>=N||b>=M){                        v[i][j]-=1;                        continue;                    }                    if(s[a][b]>s[i][j]){                        v[i][j]=v[i][j]+(s[a][b]-s[i][j]);                    }                    else{                        v[i][j]=v[i][j]-(s[i][j]-s[a][b]);                    }                }            }        }        ma=v[0][0];        ma_i=0;        ma_j=0;        for(i=0;i<N;++i){            for(j=0;j<M;++j){                if(v[i][j]>=ma){                    ma=v[i][j];                    ma_i=i;                    ma_j=j;                }            }        }        printf("Case %d: %d %d %d\n",++ca,ma,ma_i+1,ma_j+1);    }    return 0;}

0 0
原创粉丝点击