Submission #1290555

#TimeUsernameProblemLanguageResultExecution timeMemory
1290555wowwowwowHexagonal Territory (APIO21_hexagon)C++20
0 / 100
1 ms576 KiB
#include <bits/stdc++.h>
#define ll long long
#define all(v) v.begin(),v.end()
#define MASK(i) (1LL << (i))
#define ii pair<int,int>
#define fi first
#define se second
#define endl '\n'
#define forr(i,l,r,add) for(int i = l;i <= r; i = i + add)
#define fodd(i,l,r,sub) for(int i = l;i >= r ; i = i - sub)
template <typename T1, typename T2> bool minimize(T1 &a, T2 b) {if (a > b) {a = b; return true;} return false;}
template <typename T1, typename T2> bool maximize(T1 &a, T2 b) {if (a < b) {a = b; return true;} return false;}

using namespace std;

mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
#define rand rd

long long Rand(long long l , long long h){
	assert(l <= h);
	return l + 1ll * rd() % (h - l + 1) * (rd() % (h - l + 1)) % (h - l + 1);
}


//////////////////////////////////////////////////////////// end of template ////////////////////////////////////////////////////////////

const int MAX = 2e5 + 5;
ii save[MAX];
int n;
int dx[6] = {0 , 1 , 1 , 0 , -1 , -1} , dy[6] = {1 , 0 , -1 , -1 , 0 , 1};

ll calc(ii x , ii y){
    return 1ll * (y.fi - x.fi) * (x.se + y.se);
}

int draw_territory(int n, int A, int B, vector <int> kk, vector <int> kk2){
    int num_I = 0;
    forr(i , 1 , n , 1){
        int d , l;
        d = kk[i - 1] , l = kk2[i - 1];
        num_I += l;
        save[i].fi = save[i - 1].fi + dx[d - 1] * l;
        save[i].se = save[i - 1].se + dy[d - 1] * l;
    }
    ll S = 0;
    forr(i , 1 , n , 1){
        S += calc(save[i - 1] , save[i]);
    }
    S = abs(S);
    //cout << S << ' ' << num_I << endl;
    S -= num_I - 2;
    int MOD = 1e9 + 7;
    return (S / 2 + num_I) % MOD;
}

/*int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    #define TASK ""
    //freopen(TASK".inp" , "r" , stdin);
    //freopen(TASK".out" , "w" , stdout);
    INP();
    return 0;
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...