| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1316146 | antarbanik | Pyramids (IOI24_pyramids) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
using namespace std;
#define int long long
/*
N pyramids
i-th pyramid -> a[i] stones
everyday,
same length er A & B array er ekta subarr choose korbo
jana lagbo if it's possible to transform A[l-r] -> B[x-y]
transformation rules:
*/
vector<int> a, b;
void init(vector<int> A, vector<int> B) {
a = A;
b = B;
}
bool can_transform(int l, int r, int x, int y){
int n = a.size();
vector<int> prefA(n+1), prefB(n+1);
prefA[0] = a[0];
prefB[0] = b[0];
for(int i = 1;i<n;++i){
prefA[i] = prefA[i-1] + a[i];
prefB[i] = prefB[i-1] + b[i];
}
// for(int i = 0;i<n;++i){
// cout<<prefA[i]<<" ";
// }
// cout<<endl<<endl;
int tot = r - l + 1;
int minus = 0;
if(l > 0){
minus = prefA[l-1];
}
int s1 = prefA[r] - minus;
minus = 0;
if(x > 0){
minus = prefB[x-1];
}
int s2 = prefB[y] - minus;
if(s1 == s2) return 1;
return 0;
}
// int32_t main(){
// init({1, 2, 3, 4, 5}, {2, 2, 2, 4,5});
// cout<<can_transform(3, 4, 3, 4);
// return 0;
// }
