제출 #531258

#제출 시각아이디문제언어결과실행 시간메모리
531258David_MAliens (IOI16_aliens)C++14
컴파일 에러
0 ms0 KiB
//#include "aliens.h" #include <bits/stdc++.h> using namespace std; #define int long long #define ll long long #define pb push_back #define pii pair<int, int> #define all(x) (x).begin(), (x).end() #define F first #define S second deque<pair<pii, int> > dq; int o; bool check (int k, int b){ auto [k0,b0]=dq[0].F; auto [k1,b1]=dq[1].F; //k1 * x + b1 = k0 * x + b0 //(b0 - b1) / (k1 - k0) //k1 * x + b1 = k * x + b //(b - b1) / (k1 - k) //k < k0 < k1 //(b - b1) / (k1 - k) > (b0 - b1) / (k1 - k0) //(b - b1) * (k1 - k0) - (b0 - b1) * (k1 - k) > 0 return (b - b1) * (k1 - k0) - (b0 - b1) * (k1 - k) > 0; } void add(int k, int b, int cnt){ while(dq.size()>1 && check(k, b))dq.pop_front(),o=max(o-1,(ll)0); dq.push_front({{k,b},cnt}); } pii get(int i, ll x, ll C){ auto [k,b]=dq[i].F; //cout<<"[i, k, b, x]: "<<i<<" "<<k<<" "<<b<<" "<<x<<endl; return {k*x+b, dq[i].S}; } ll take_photos(int n, int m, int k, vector<int> r, vector<int> c) { ll Ans=0; vector<pii> v, V(n); for (int i=0; i<n; i++){ if(c[i]<r[i])swap(r[i], c[i]); V[i]={r[i], -c[i]}; } sort(all(V)); int rr=0; for (auto [l,r]:V){ r*=-1; ////cout<<r<<endl; if(r>rr)v.pb({l,r+1}); rr=max(r, rr); } V.clear(); n=v.size(); for (auto [l,r]:v){ //cout<<"[l, r]: "<<l<<" "<<r<<endl; } ll L=0, R=1e18; while(L<=R){ ll C=(L+R)>>1; vector<pii> dp(n+1); dp[0]={0,0}; for (int i=1; i<=n; i++){ auto &[ans, cnt]=dp[i]; int r=v[i-1].S; ans=r*r+C; //cout<<"[ans]: "<<ans<<endl; cnt=1; int x=r; while(i>1 && get(o,x,C)>get(o+1,x,C))o++; if(i>1){ auto [ans0, cnt0]=get(o,x,C); //cout<<"[o]: "<<o<<" "<<dq.size()<<endl; ans+=ans0; cnt+=cnt0; } if(i==n)continue; int l=v[i].F; add(-2*l, ans + l*l - max((ll)0, r-l)*max((ll)0, r-l), cnt); } for (auto [x, y]:dp){ //cout<<"[dp]: "<<x<<" "<<y<<endl; } if(dp[n].S>k){ L=C+1; }else{ Ans=dp[n].F-dp[n].S*C; //cout<<"[C, Ans]: "<<C<<" "<<Ans<<endl; R=C-1; } dq.clear(); o=0; } //dp + (r1-l)^2 - (r2-l)^2 //dp + r1*r1 + l*l - 2*r1*l - (r2-l)^2 //(-2*l) * r1 + (dp - r2*r2 + 2*r2*l) return Ans; } /* main() { int n, m, k; assert(3 == scanf("%d %d %d", &n, &m, &k)); std::vector<int> r(n), c(n); for (int i = 0; i < n; i++) { assert(2 == scanf("%d %d", &r[i], &c[i])); } long long ans = take_photos(n, m, k, r, c); printf("%lld\n", ans); return 0; } */ /* 5 7 2 0 3 4 4 4 6 4 5 4 6 */

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

aliens.cpp: In function 'bool check(long long int, long long int)':
aliens.cpp:17:10: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   17 |     auto [k0,b0]=dq[0].F;
      |          ^
aliens.cpp:18:10: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   18 |     auto [k1,b1]=dq[1].F;
      |          ^
aliens.cpp: In function 'std::pair<long long int, long long int> get(long long int, long long int, long long int)':
aliens.cpp:39:10: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   39 |     auto [k,b]=dq[i].F;
      |          ^
aliens.cpp: In function 'long long int take_photos(long long int, long long int, long long int, std::vector<long long int>, std::vector<long long int>)':
aliens.cpp:55:15: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   55 |     for (auto [l,r]:V){
      |               ^
aliens.cpp:64:15: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   64 |     for (auto [l,r]:v){
      |               ^
aliens.cpp:64:15: warning: structured binding declaration set but not used [-Wunused-but-set-variable]
   64 |     for (auto [l,r]:v){
      |               ^~~~~
aliens.cpp:74:19: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   74 |             auto &[ans, cnt]=dp[i];
      |                   ^
aliens.cpp:83:22: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   83 |                 auto [ans0, cnt0]=get(o,x,C);
      |                      ^
aliens.cpp:94:19: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   94 |         for (auto [x, y]:dp){
      |                   ^
aliens.cpp:94:19: warning: structured binding declaration set but not used [-Wunused-but-set-variable]
   94 |         for (auto [x, y]:dp){
      |                   ^~~~~~
/usr/bin/ld: /tmp/cciYlSmv.o: in function `main':
grader.cpp:(.text.startup+0xf0): undefined reference to `take_photos(int, int, int, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status