Submission #889368

#TimeUsernameProblemLanguageResultExecution timeMemory
889368ASN49KAliens (IOI16_aliens)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include "aliens.h" using namespace std; using i64=long long; const i64 INF=1e18; #define bug(x) cerr<<#x<<x<<'\n'; #define all(yy) yy.begin(),yy.end() #define pb push_back const int inf=1e9; struct duo { int l,r; bool operator <(const duo&b)const { if(l==b.l) { return r>b.r; } return l<b.l; } }; ////////////////////////////GEOMETRY //////////////////////////////////// struct line { i64 a,b; i64 calculate(int x) { return a*x+b; } }; i64 intersect(const line& c,const line& d) { return (d.b-c.b+c.a-d.a-1)/(c.a-d.a); } struct CHT { deque<line>d; void add(const line e) { while(d.size()>=2 && intersect(d[d.size()-2],d.back())>=intersect(d.back(),e)) { d.pop_back(); } d.pb(e); } i64 query(int val) { while(d.size()>=2 && d[0].calculate(val)>=d[1].calculate(val)) { d.pop_front(); } return d[0].calculate(val); } void clear() { d.clear(); } }; i64 pow2(i64 x) { return x*x; } ///////////////////////////////////////////////////// ///////////////////////////////////////////////////// i64 take_photos(int n, int m, int k, vector<int> rr[], vector<int> cc[]) { vector<duo>a(n); for(int i=0;i<n;i++) { a[i]={min(rr[i],cc[i]),max(rr[i],cc[i])}; } vector<duo>aux=a; a.clear(); sort(all(aux)); int maxx=-1; for(auto &c:aux) { if(c.r>maxx) { a.pb(c); maxx=c.r; } } aux.clear(); n=(int)a.size(); vector<i64>dp(n+1,inf); for(int _=0;_<k;_++) { CHT cht; cht.add({-2*(a[0].l-1),pow2(a[0].l-1)}); for(int i=0;i<n;i++) { i64 sol=pow2(a[i].r)+cht.query(a[i].r); if(i!=n-1) { cht.add({-2*(a[i+1].l-1) , pow2(a[i+1].l-1)+pow2(max(0,a[i].r-a[i+1].l+1))+dp[i]}); } dp[i]=sol; } } return dp[n-1]; }

Compilation message (stderr)

aliens.cpp: In function 'i64 take_photos(int, int, int, std::vector<int>*, std::vector<int>*)':
aliens.cpp:71:48: error: no match for 'operator=' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<duo>, duo>::value_type' {aka 'duo'} and '<brace-enclosed initializer list>')
   71 |         a[i]={min(rr[i],cc[i]),max(rr[i],cc[i])};
      |                                                ^
aliens.cpp:10:8: note: candidate: 'constexpr duo& duo::operator=(const duo&)'
   10 | struct duo
      |        ^~~
aliens.cpp:10:8: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const duo&'
aliens.cpp:10:8: note: candidate: 'constexpr duo& duo::operator=(duo&&)'
aliens.cpp:10:8: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'duo&&'