HDU 4451 Dressing

先从衣服处理到裤子,在从裤子处理到鞋子

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <cmath>
#include <map>
#include <string>
using namespace std;

const int maxn=1000+10;
long long A[maxn][maxn];
long long B[maxn][maxn];
long long ans1[maxn],ans2[maxn];
char s1[1000],s2[1000];
int x,y;
int n,m,k,p;

int main()
{
    while(~scanf("%d%d%d",&n,&m,&k))
    {
        if(!n&&!m&&!k) break;
        scanf("%d",&p);

        memset(ans1,0,sizeof ans1);
        memset(ans2,0,sizeof ans2);

        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++) A[i][j]=0;

        for(int i=1;i<=m;i++)
            for(int j=1;j<=k;j++) B[i][j]=0;

        for(int i=1; i<=p; i++)
        {
            scanf("%s",s1); scanf("%d",&x);

            scanf("%s",s2); scanf("%d",&y);

            if(strcmp("clothes",s1)==0) A[x][y]=1;

            else if(strcmp("pants",s1)==0) B[x][y]=1;

        }

        for(int j=1; j<=m; j++)
        {
            long long sum=0;
            for(int i=1; i<=n; i++)
            {
                if(A[i][j]==0)
                    sum=sum+1;
            }
            ans1[j]=sum;
        }

        for(int j=1; j<=k; j++)
        {
            long long sum=0;
            for(int i=1; i<=m; i++)
            {
                if(B[i][j]==0)
                {
                    sum=sum+ans1[i];
                }
            }
            ans2[j]=sum;
        }
        long long ans=0;
        for(int i=1; i<=k; i++) ans=ans+ans2[i];
        printf("%lld\n",ans);
    }
    return 0;
}

 

posted @ 2016-01-27 20:01  Fighting_Heart  阅读(143)  评论(0编辑  收藏  举报