为防止广告,目前nocow只有登录用户能够创建新页面。如要创建页面请先登录/注册(新用户需要等待1个小时才能正常使用该功能)。

Sgu/177

来自NOCOW
< Sgu
跳转到: 导航, 搜索
//by hza
#include<cstdio>
 
const int MAX=5000+100;
 
struct rec
{
    int x1,x2,y1,y2;
    char color;
}r[MAX];
 
int n,m;
int ans_black;
 
void calc(int i,int x1,int y1,int x2,int y2,char color)
{
    if(x1>x2||y1>y2)return;
    if(i==m+1&&color=='b'){ans_black+=(x2-x1+1)*(y2-y1+1);return;}
    if(r[i].x1>x2||r[i].y1>y2||r[i].x2<x1||r[i].y2<y1)
    {
        calc(i+1,x1,y1,x2,y2,color);
        return;
    }
    if(r[i].x1>=x1&&r[i].x1<=x2)
    {        
        calc(i+1,x1,y1,r[i].x1-1,y2,color);
        x1=r[i].x1;
    }
    if(r[i].x2>=x1&&r[i].x2<=x2)
    {        
        calc(i+1,r[i].x2+1,y1,x2,y2,color);
        x2=r[i].x2;
    }
    if(r[i].y1>=y1&&r[i].y1<=y2)
    {        
        calc(i+1,x1,y1,x2,r[i].y1-1,color);
        y1=r[i].y1;
    }
    if(r[i].y2>=y1&&r[i].y1<=y2)
    {        
        calc(i+1,x1,r[i].y2+1,x2,y2,color);
        y2=r[i].y2;
    }
}
 
int main()
{
    #ifndef ONLINE_JUDGE
    freopen("177.in","r",stdin);freopen("177.out","w",stdout);
    #endif
    int i,x1,y1,x2,y2;
    scanf("%d %d",&n,&m);
    for(i=1;i<=m;++i)
    {
        scanf("%d %d %d %d %c",&x1,&y1,&x2,&y2,&r[i].color);
        if(x1<x2)r[i].x1=x1,r[i].x2=x2;
        else r[i].x2=x1,r[i].x1=x2;
        if(y1<y2)r[i].y1=y1,r[i].y2=y2;
        else r[i].y2=y1,r[i].y1=y2;
    }
    for(i=1;i<=m;++i)
        if(r[i].color=='b')
            calc(i+1,r[i].x1,r[i].y1,r[i].x2,r[i].y2,r[i].color);
    printf("%d\n",n*n-ans_black);
}
个人工具