Submission #1328278

#TimeUsernameProblemLanguageResultExecution timeMemory
1328278Mamikonm1Game (IOI13_game)C++17
37 / 100
13086 ms20224 KiB
#include<bits//stdc++.h>
#include "game.h"
using namespace std;
using ll = long long;
long long GCD(long long X, long long Y) {
    long long tmp;
    while (X != Y && Y != 0) {
        tmp = X;
        X = Y;
        Y = tmp % Y;
    }
    return X;
}
struct segment_tree{
    int n;
    vector<ll>seg;
    void update(int i,ll x){
        seg[i+=n]=x;
        for(i/=2;i;i/=2)seg[i]=GCD(seg[i*2],seg[i*2+1]);
    }
    ll get(int l,int r){
        ll ret=0;
        for(l+=n,r+=n+1;l<r;l/=2,r/=2){
            if(l&1)ret=GCD(ret,seg[l++]);
            if(r&1)ret=GCD(ret,seg[--r]);
        }
        return ret;
    }
};
vector<segment_tree>a;
void init(int R, int C) {
    a.resize(R);
    for(int i=0;i<R;++i)a[i].seg.resize(2*C),a[i].n=C;
}

void update(int P, int Q, long long K) {
    a[P].update(Q,K);
}

long long calculate(int P, int Q, int U, int V) {
    ll res=0;
    for(int i=P;i<=U;++i){
        res=GCD(res,a[i].get(Q,V));
    }
    return res;
}
#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...