메뉴 건너뛰기

Programing

BAEKJOON

16201

관리자 2020.04.11 09:31 조회 수 : 44

C++

#include <cstdio>

#include <algorithm>

using namespace std;

struct Pos{

    long long r;

    long long c;

    bool operator < (const Pos a){

        if(r!=a.r)

            return r<a.r;

        return c<a.c;

    }

};

long long R,C,K,cnt;

long long result=1,cnt_p;

long long arr[200];

const int mod=1000000007;

Pos pos[1100];

int main()

{

    scanf("%lld %lld %lld",&R,&C,&K);

    for(int i=0;i<K;i++){

        long long r,c;

        scanf("%lld %lld",&r,&c);

        pos[i]={r,c};

    }

    sort(pos,pos+K);

    int prev_=-1;

    for(int i=0;i<K;i++){

        if(pos[i].r!=prev_){

            prev_=pos[i].r;

            result*=(pos[i].c-1)%2==0 ? 1:(pos[i].c-1)/2+1;

            cnt_p+=(pos[i].c-1)/2;

            result%=mod;

            cnt++;

        }

        if(i+1==K||pos[i+1].r!=prev_){

            result*=(C-pos[i].c)%2==0 ? 1:(C-pos[i].c)/2+1;

            cnt_p+=(C-pos[i].c)/2;

            result%=mod;

            continue;

        }

        result*=(pos[i+1].c-pos[i].c-1)%2==0 ? 1:(pos[i+1].c-pos[i].c-1)/2+1;

        cnt_p+=(pos[i+1].c-pos[i].c-1)/2;

        result%=mod;

    }

    cnt=R-cnt;

    long long a=C%2==0 ? 1:C/2+1;

    cnt_p+=C/2*cnt;

    if(a!=1&&cnt>0)

    {

        long long i,idx=1;

        arr[0]=a;

        for(i=1;i+i<=cnt;i+=i,idx++){

            arr[idx]=arr[idx-1]*arr[idx-1]%mod;

        }

        result=result*arr[idx-1]%mod;

        for(int j=idx-2;j>=0;j--){

            if(i+(1<<j)<=cnt){

                result=result*arr[j]%mod;

                i+=1<<j;

            }

        }

    }

    printf("%lld %lld",cnt_p,result);

    return 0;

}

 
번호 제목 글쓴이 날짜 조회 수
공지 안내사항 관리자 2019.12.21 163
45 2468 관리자 2019.12.21 8
44 2458 관리자 2020.04.11 44
43 2457 관리자 2020.04.11 47
42 2454 관리자 2020.04.11 43
41 2450 관리자 2020.04.11 40
40 2339 관리자 2020.04.11 41
39 2307 관리자 2019.12.21 8
38 2250 관리자 2019.12.21 8
37 2233 관리자 2019.12.21 6
36 2170 관리자 2019.12.21 7
35 2132 관리자 2019.12.21 7
34 2096 관리자 2019.12.21 8
33 2042 관리자 2020.04.11 45
32 2003 관리자 2020.04.11 39
31 1991 관리자 2019.12.21 8
30 1967 관리자 2019.12.21 6
29 1966 관리자 2020.04.11 45
28 1946 관리자 2020.04.11 39
27 1874 관리자 2020.04.11 43
26 1839 관리자 2020.04.11 44
25 17611 관리자 2019.12.21 7
24 1753 관리자 2019.12.21 8
23 1742 관리자 2020.04.11 6
22 1720 관리자 2020.04.11 6
21 16210 관리자 2020.04.11 57
» 16201 관리자 2020.04.11 44
19 15971 관리자 2019.12.21 6
18 14865 관리자 2019.12.21 8
17 14503 관리자 2019.12.21 7
16 14502 관리자 2019.12.21 6
위로