제출 #1243147

#제출 시각아이디문제언어결과실행 시간메모리
1243147moondarkside말 (IOI15_horses)C++20
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;

#define MODULO ((long long) (1e9+7))



struct Point{
    int inMult;
    int outMult;
    int SellMult;
    bool inOver;
};

vector<struct Point> Segtree;

int num;
vector<int> Yg;
vector<int> Xg;

struct Point update(struct Point cr,int pos,int l,int r,int n){
    if(r<pos){
        return Segtree[n];
    }
    
    if(pos<l){
        return Segtree[n];
    }
    if(r==l && l==pos){
        Segtree[n]=cr;
        return Segtree[n];
    }
    
    struct Point left=update(cr,pos,l,(l+r)/2,2*n);
    struct Point right=update(cr,pos,(l+r)/2+1,r,2*n+1);
    long long mult=left.outMult*right.inMult;
    bool over= mult>=MODULO || right.inOver;
    
    struct Point New;
    
    if(over || mult*right.SellMult>=left.SellMult){
        New={mult%MODULO,right.outMult,right.SellMult,over};
    }
    else{
        New={left.inMult,right.inMult*right.outMult*left.outMult,left.SellMult,left.inOver};
    }
    Segtree[n]=New;
    return Segtree[n];
}

int init(int N,vector<int> X,vector<int> Y){
    Xg=X;
    Yg=Y;
    Segtree=vector<struct Point>(N*8);
    num=N-1;
    for(int i=0;i<N;i++){
        struct Point temp={X[i],1,Y[i],false};
        update(temp,i,0,num,1);
    }
    return (Segtree[1].inMult*Segtree[1].SellMult)%MODULO;
}

int updateX(int pos,int val){
    Xg[pos]=val;
    struct Point temp={val,1,Yg[pos],false};
    update(temp,pos,0,num,1);
    return (Segtree[1].inMult*Segtree[1].SellMult)%MODULO;
}

int updateY(int pos,int val){
    Yg[pos]=val;
    struct Point temp={Xg[pos],1,val,false};
    update(temp,pos,0,num,1);
    return (Segtree[1].inMult*Segtree[1].SellMult)%MODULO;
}

컴파일 시 표준 에러 (stderr) 메시지

horses.cpp: In function 'Point update(Point, int, int, int, int)':
horses.cpp:42:18: warning: narrowing conversion of '(mult % (long long int)(1.0e+9 + (double)7))' from 'long long int' to 'int' [-Wnarrowing]
   42 |         New={mult%MODULO,right.outMult,right.SellMult,over};
      |                  ^
/usr/bin/ld: /tmp/ccdCGSdp.o: in function `main':
grader.c:(.text.startup+0xb1): undefined reference to `init(int, int*, int*)'
collect2: error: ld returned 1 exit status