hiho week 234 register

Ended

Participants:94

Verdict:Accepted
Score:100 / 100
Submitted:2018-12-24 15:46:22

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <bits/stdc++.h>
using namespace std;
inline int read(){
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
int row[15],col[15];
int main()
{
    int n,m,k;
    n=read();m=read();k=read();
    for(int i=0;i<k;i++)row[i]=read(),col[i]=read();
    long long tot=1ll*n*(n+1)*m*(m+1)/4,tmp;
    int maxx=(1<<k)-1,l,r,u,d,cnt;
    for(int i=1;i<=maxx;i++){
        cnt=0;l=m+1,r=0,d=n+1,u=0;
        for(int j=0;j<k;j++){
            if(i&(1<<j)){
                cnt++;
                l=min(l,col[j]);
                r=max(r,col[j]);
                u=max(u,row[j]);
                d=min(d,row[j]);
            }
        }
        tmp=1ll*l*d*(n-r+1)*(m-u+1);
        if(cnt%2)tot-=tmp;
        else tot+=tmp;
    }
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX