답안 #729084

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
729084 2023-04-23T13:24:14 Z Nahian9696 육각형 영역 (APIO21_hexagon) C++17
0 / 100
1 ms 212 KB
#include "hexagon.h"

#include <vector>
#include <bits/stdc++.h>

using namespace std;

#define f0(i, n)                for(int i = 0; i <  (n); i++)
#define f1(i, n)                for(int i = 1; i <= (n); i++)
#define pb                      push_back
#define ff first
#define ss second


pair<long double, long double> dir[] = {
    {0, 2},
    {sqrt(3), 1},
    {sqrt(3), -1},
    {-0, -2},
    {-sqrt(3), -1},
    {-sqrt(3), 1}
};

const int MOD = 1e9+7;


int draw_territory(int N, int A, int B,
                   std::vector<int> D, std::vector<int> L) {


    if(N == 3) {
        int l = L[0];
        l = l*(l+1);
        l /= 2;
        l %= MOD;
        l*=A;
        l %= MOD;
        return l;
    }


    if(B == 0) {
        vector<pair<long double, long double>> coord;
        coord.pb({0, 0});
        pair<long double, long double> cur = {0, 0};
        int len = 0;
        f0(i, N) {
            cur.ff = cur.ff + L[i]*dir[D[i]-1].ff;
            cur.ss = cur.ss + L[i]*dir[D[i]-1].ss;
            coord.pb(cur);
            len += L[i];
        }

        long double area = 0;
        f0(i, N) {
            area += coord[i].ff*coord[i+1].ss;
            area -= coord[i].ss*coord[i+1].ff;
        }

        area = abs(area)/2;
        // cout << area << endl;

        area += (6/sqrt(3));

        area += (len*3.0/sqrt(3));

        area /= (6/sqrt(3));
        // cout << area << endl;

        return ((((int)floor(area + 0.5) % MOD)*(A% MOD)) % MOD);

    }

    

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -