제출 #1280291

#제출 시각아이디문제언어결과실행 시간메모리
1280291PlayVoltz사탕 분배 (IOI21_candies)C++20
컴파일 에러
0 ms0 KiB
#include "candies.h" #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second struct node{ int s, e, m, mx, mn, val; node *l, *r; node(int S, int E){ s=S, e=E, m=(s+e)/2; mx=mn=val=0; if (s!=e){ l = new node(s, m); r = new node(m+1, e); } } void up(int i, int v){ if (s==e){ val=mn=mx=v; return; } if (i<=m)l->up(i, v); else r->up(i, v); val=l->val+r->val; mn=min(l->mn+r->val, r->mn); mx=max(l->mx+r->val, r->mx); } pii querymx(int left, int right){ if (s==left && e==right)return mp(mx, val); if (right<=m)return l->querymx(left, right); else if (left>m)return r->querymx(left, right); pii ll=l->querymx(left, m), rr=r->querymx(m+1, right); return mp(max(ll.fi+rr.se, rr.fi), ll.se+rr.se); } pii querymn(int left, int right){ if (s==left && e==right)return mp(mn, val); if (right<=m)return l->querymn(left, right); else if (left>m)return r->querymn(left, right); pii ll=l->querymn(left, m), rr=r->querymn(m+1, right); return mp(min(ll.fi+rr.se, rr.fi), ll.se+rr.se); } }*st; vector<signed> distribute_candies(vector<signed> c, vector<signed> l, vector<signed> r, vector<signed> v){ int n=c.size(); vector<vector<pii> > updates(n+1); for (int i=0; i<l.size(); ++i)updates[l[i]].pb(mp(i, -v[i])), updates[r[i]+1].pb(mp(i, 0)); st = new node(0, n); vector<int> ans(n); for (int i=0; i<n; ++i){ for (auto c:updates[i])st->up(c.fi, c.se); int low=-1, high=n; while (low+1<high){ int mid=(low+high)/2; if (st->querymx(mid, n-1).fi-st->querymn(mid, n-1).fi>c[i])low=mid; else high=mid; } if (low==-1)ans[i]=-st->querymn(0, n-1).fi; else{ int mx=st->querymx(low, n-1).fi, mn=st->querymn(low, n-1).fi; if (v[low]>0)ans[i]=c[i]-mx; else ans[i]=-mn; } } return ans; }

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

candies.cpp: In function 'std::vector<int> distribute_candies(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
candies.cpp:72:16: error: could not convert 'ans' from 'vector<long long int>' to 'vector<int>'
   72 |         return ans;
      |                ^~~
      |                |
      |                vector<long long int>