Submission #1217845

#TimeUsernameProblemLanguageResultExecution timeMemory
1217845hossainrasel1042Game (IOI13_game)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define fastio ios_base::sync_with_stdio(false); cin.tie(nullptr);

vector<vector<int>>tree;
vector<vector<int>>st;
int n,m;
void buildy(int nodex,int lx,int rx,int nodey,int ly,int ry){
    if(ly==ry){
        if(lx==rx){
            tree[nodex][nodey]=st[lx][ly];
        }else{
            tree[nodex][nodey]=gcd(tree[2*nodex][nodey],tree[2*nodex+1][nodey]);
        }
        return;
    }
    int mid=(ly+ry)>>1;
    buildy(nodex,lx,rx,2*nodey,ly,mid);
    buildy(nodex,lx,rx,2*nodey+1,mid+1,ry);
    tree[nodex][nodey]=gcd(tree[nodex][2*nodey],tree[nodex][2*nodey+1]);
}
void buildx(int nodex,int lx,int rx){
    if(lx==rx){
        buildy(nodex,lx,rx,1,0,m-1);
        return;
    }
    int mid=(lx+rx)>>1;
    buildx(2*nodex,lx,mid);
    buildx(2*nodex+1,mid+1,rx);
    buildy(nodex, lx, rx, 1, 0, m - 1); 
}
int queryy(int nodex, int nodey, int ly, int ry, int y1, int y2) {
    if (y2 < ly || ry < y1) return 0;
    if (y1 <= ly && ry <= y2) return tree[nodex][nodey];

    int mid = (ly + ry) >> 1;
    return gcd(queryy(nodex, 2 * nodey, ly, mid, y1, y2)
         , queryy(nodex, 2 * nodey + 1, mid + 1, ry, y1, y2));
}

int queryx(int nodex, int lx, int rx, int x1, int x2, int y1, int y2) {
    if (x2 < lx || rx < x1) return 0;
    if (x1 <= lx && rx <= x2) return queryy(nodex, 1, 0, m - 1, y1, y2);

    int mid = (lx + rx) >> 1;
    return gcd(queryx(2 * nodex, lx, mid, x1, x2, y1, y2)
         , queryx(2 * nodex + 1, mid + 1, rx, x1, x2, y1, y2));
}
void updatey(int nodex,int xl,int xr,int nodey,int yl,int yr,int x1,int y1,int val){
    if(yl==yr){
        if(xl==xr){
            tree[nodex][nodey]=val;
        }else{
            tree[nodex][nodey]=gcd(tree[2*nodex][nodey],tree[2*nodex+1][nodey]);
        }
        return;
    }
    int mid=(yl+yr)>>1;
    if(y1<=mid){
        updatey(nodex,xl,xr,2*nodey,yl,mid,x1,y1,val);
    }else{
        updatey(nodex,xl,xr,2*nodey+1,mid+1,yr,x1,y1,val);
    }
    tree[nodex][nodey]=gcd(tree[nodex][2*nodey],tree[nodex][2*nodey+1]);
}
void updatex(int nodex,int xl,int xr,int x1,int y1,int val){
    if(xl==xr){
        updatey(nodex,xl,xr,1,0,m-1,x1,y1,val);
        return;
    }
    int mid=(xl+xr)>>1;
    if(x1<=mid){
        updatex(2*nodex,xl,mid,x1,y1,val);
    }else{
        updatex(2*nodex+1,mid+1,xr,x1,y1,val);
    }
    updatey(nodex,xl,xr,1,0,m-1,x1,y1,val);
}
void solve(){
      cin >> n >> m;
    st.resize(n, vector<int>(m,0));
    tree.resize(4 * n, vector<int>(4 * m));
    buildx(1, 0, n - 1);
    int q;
cin >> q;
while (q--) {
    int type;
    cin >> type;
    if (type == 2) {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2;
        cout << queryx(1, 0, n - 1, x1, x2, y1, y2) << endl;
    } else if (type == 1) {
        int x, y, val;
        cin >> x >> y >> val;
        updatex(1, 0, n - 1, x, y, val);
    }
}
}
int32_t main() {
    fastio
    solve();
    return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccZBsD1d.o: in function `main':
grader.c:(.text.startup+0x0): multiple definition of `main'; /tmp/ccOR5oOe.o:game.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccZBsD1d.o: in function `main':
grader.c:(.text.startup+0x6a): undefined reference to `init'
/usr/bin/ld: grader.c:(.text.startup+0xcc): undefined reference to `calculate'
/usr/bin/ld: grader.c:(.text.startup+0x136): undefined reference to `update'
collect2: error: ld returned 1 exit status