Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- int gcd(int a, int b){
- if (a==0){
- return b;
- }
- return gcd(b%a, a);
- }
- void build(vector<int>& tree, vector<int>& a, int v, int l, int r){
- if (r-l==1){
- tree[v]=a[l];
- return;
- }
- int m=(r+l)/2;
- build(tree, a, 2*v+1, l, m);
- build(tree, a, 2*v+2, m, r);
- tree[v]=gcd(tree[2*v+1], tree[2*v+2]);
- return;
- }
- int main(){
- int n;
- cin>>n;
- vector<int> a(n);
- for (int i=0; i<n; i++){
- cin>>a[i];
- }
- vector<int> tree(4*n);
- build(tree, a, 0, 0, n);
- if ((a[n-1]/tree[0])%2==n%2){
- cout<<"Bob"<<"\n";
- return 0;
- }
- cout<<"Alice"<<"\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement