Submission #729063

# Submission time Handle Problem Language Result Execution time Memory
729063 2023-04-23T13:02:42 Z Nahian9696 Hexagonal Territory (APIO21_hexagon) C++17
Compilation error
0 ms 0 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}
};


int draw_territory(int N, int A, int B,
                   std::vector<int> D, std::vector<int> 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 (((floor(area + 0.5) % 1e9+7)*(A% 1e9+7)) % 1e9+7);

    }

    if(N == 3) {

    }

    return 0;
}

Compilation message

hexagon.cpp: In function 'int draw_territory(int, int, int, std::vector<int>, std::vector<int>)':
hexagon.cpp:55:37: error: invalid operands of types 'long double' and 'double' to binary 'operator%'
   55 |         return (((floor(area + 0.5) % 1e9+7)*(A% 1e9+7)) % 1e9+7);
      |                   ~~~~~~~~~~~~~~~~~ ^ ~~~
      |                        |              |
      |                        long double    double
hexagon.cpp:55:48: error: invalid operands of types 'int' and 'double' to binary 'operator%'
   55 |         return (((floor(area + 0.5) % 1e9+7)*(A% 1e9+7)) % 1e9+7);
      |                                               ~^ ~~~
      |                                               |  |
      |                                               |  double
      |                                               int