| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1347344 | jahinahnaf | Pyramids (IOI24_pyramids) | C++17 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll = long long int;
using vi = vector<int>;
using vvi = vector<vector<int>>;
using vll = vector<ll>;
using vpii = vector<pair<int,int>>;
#define pb push_back
const ll MOD = 10e9;
vll prefixSumA;
vll prefixSumB;
void init(vll A, vll B){
prefixSumA.resize(A.size(), 0);
prefixSumB.resize(B.size(), 0);
prefixSumA[0] = A[0];
prefixSumB[0] = B[0];
for (int i = 1; i < A.size(); i++){
prefixSumA[i] = A[i] + prefixSumA[i-1];
prefixSumB[i] = B[i] + prefixSumB[i-1];
}
}
bool can_transform(ll L, ll R, ll X, ll Y){
ll lrSum, xySum;
if (L == 0){
lrSum = prefixSumA[R];
}
else if (L > 0) {
lrSum = prefixSumA[R] - prefixSumA[L - 1];
}
if (X == 0){
xySum = prefixSumB[Y];
}
else if (X > 0) {
xySum = prefixSumB[Y] - prefixSumB[X - 1];
}
if (lrSum == xySum) {
return true;
}
else return false;
}