Codeforces Round #305 (Div. 2)_B

来源:互联网 发布:沙箱 行为分析软件 编辑:程序博客网 时间:2024/05/29 18:54

题意:输入一个n*m的表格 询问q次 表格内只含有0和1 每次询问输入单元的行列 若为1则变成0 若为0则变成1 输出每次询问后该表格中行的最长连续1 

比较麻烦  水一发~

#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;int n,m,q;int grid[510][510];int maxlen[510];int find_max(int row){    int Max=0,s=1,Max1=0;    for(int i=s;i<=m;i++)    {        if(grid[row][i]==1)        {            for(int j=i;j<=m;j++)            {                if(grid[row][j]==1)                    Max1++;                if(j==m)                {                    Max=max(Max,Max1);                    Max1=0;                }                if(!grid[row][j])                {                    Max=max(Max,Max1);                    Max1=0;                }            }        }    }    return Max;}int main(){    while(~scanf("%d%d%d",&n,&m,&q))    {        memset(grid,-1,sizeof(grid));        for(int i=1;i<=n;i++)            for(int j=1;j<=m;j++)            scanf("%d",&grid[i][j]);        for(int i=1;i<=n;i++)        {            grid[i][m+1]=find_max(i);        }        int qi,qj;        while(q--)        {            scanf("%d%d",&qi,&qj);            if(grid[qi][qj])                grid[qi][qj]=0;            else                grid[qi][qj]=1;            grid[qi][m+1]=find_max(qi);            int MAX=-1;            for(int i=1;i<=n;i++)            {                if(MAX<grid[i][m+1])                    MAX=grid[i][m+1];            }            printf("%d\n",MAX);        }    }    return 0;}


0 0
原创粉丝点击