제출 #1127367

#제출 시각아이디문제언어결과실행 시간메모리
1127367enzy쌀 창고 (IOI11_ricehub)C++20
컴파일 에러
0 ms0 KiB
#include "ricehub.h" #include<bits/stdc++.h> #define int long long using namespace std; const int inf=1e18+10; const int maxn=1e5+10; int v[maxn], sp[maxn], n; bool check(int x, int lim){ int cost=inf; for(int i=0;i<=x;i++){ // vou checar se os i primeiros caras n existem e os x-i ultimos caras n existem tbm // o "1" vai ser o 1+i, e o "n", sera o n-(x-i); // portanto a mediana será: piso(((1+i)+(n-(x-i))+1)/2) int opt=((1+i)+(n-(x-i))+1)/2; int at=v[opt]*(opt-i+1)-(sp[opt]-sp[i])+(sp[n-(x-i)]-sp[opt])-v[opt]*(n-(x-i)-opt); // o custo eh o modulo de |v[opt]-v[j]|, sendo 1+i<=j<=(n-(x-i)) // temos q se j<=opt => |v[opt]-v[j]|=v[opt]-v[j] (ou seja: qtd*v[opt]-soma de todos menores) // e caso contrário (j>opt)=>|v[opt]-v[j]|=v[j]-v[opt] (ou seja: soma dos maiores-qtd*v[opt]) cost=min(cost,at); } return cost<=lim; } int besthub(int R, int L, int X[], int B) { n=R; for(int i=1;i<=n;i++) v[i]=X[i-1]; for(int i=1;i<=n;i++) sp[i]=sp[i-1]+v[i]; int l=1, r=n; while(l<r){ int mid=(l+r+1)/2; if(check(mid,B)) l=mid; else r=mid-1; } return l; }

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

/usr/bin/ld: /tmp/ccI6xrGA.o: in function `main':
grader.cpp:(.text.startup+0xaa): undefined reference to `besthub(int, int, int*, long long)'
collect2: error: ld returned 1 exit status