CodeForces 548B

来源:互联网 发布:数据库阻塞和死锁区别 编辑:程序博客网 时间:2024/05/21 18:30

水题一道,却切得很吃力。

题意:n*m的图上有许多小格,小格上是数字0或者1,问每对一个小格上的数字进行反转一次,在所有行中最大的连续的1的个数。

#include <iostream>#include <cstdio>#include <algorithm>using namespace std;struct A{  int maxx,sum;}a[505];int main(){    int n,m,q;    int s[505][505],maxn,x,y;    while(scanf("%d%d%d",&n,&m,&q)!=EOF)    {      maxn=-1;      for(int i=1;i<=n;i++)      for(int j=1;j<=m;j++)      scanf("%d",&s[i][j]);      for(int i=1;i<=n;i++)      {        a[i].maxx=-1;        a[i].sum=0;      }      for(int i=1;i<=n;i++)      {        for(int j=1;j<=m;j++)        {          if(s[i][j]==1)          {            a[i].sum++;          }          else          {            a[i].maxx=max(a[i].maxx,a[i].sum);            a[i].sum=0;          }            a[i].maxx=max(a[i].maxx,a[i].sum);        }        maxn=max(maxn,a[i].maxx);      }      while(q--)      {        scanf("%d%d",&x,&y);        if(s[x][y]==1)        {         s[x][y]=0;        }        else        {         s[x][y]=1;        }        a[x].sum=0;        a[x].maxx=-1;  //!!!        for(int j=1;j<=m;j++)        {         if(s[x][j]==1)         {          a[x].sum++;         }         else         {          a[x].sum=0;          a[x].maxx=max(a[x].maxx,a[x].sum);         }          a[x].maxx=max(a[x].maxx,a[x].sum);        }        int ans=-1;        for(int i = 1; i<=n; i++) //!!!        ans=max(ans,a[i].maxx);        printf("%d\n",ans);      }    }    return 0;}



0 0
原创粉丝点击