답안 #33785

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
33785 2017-11-01T23:09:58 Z leejseo Aliens (IOI16_aliens) C++
컴파일 오류
0 ms 0 KB
#include "aliens.h"
#include <stdio.h>
#include <algorithm>

using namespace std;
typedef long long lld;
#define append push_back
#define MAXN 100001
#define all(v) (v).begin(), (v).end()

long long D[MAXN][501];

struct Point{
    int r, c;
} A[MAXN];

long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c) {
    // n : interesting place
    // m : row
    // k : max image
    vector <Point> arr;
    for (int i = 0; i < n; i ++) arr.append({min(r[i], c[i]), max(r[i], c[i])});
    sort(all(arr), [](const Point &a, const Point &b){
        if (a.c != b.c) return a.c < b.c;
        return a.r > b.r;
    });
    int K = min(k, n);
    for (int i=1; i <= n; i++) for(int j=1; j<=K; j++) D[i][j] = 1e18;
    for (int i=1; i<=n; i++) D[i][1] = (long long )(A[i].c - A[1].r+1 )*(A[i].c - A[1].r+1);
    for (int i=2; i<K; i++){
        for(int j=1; j<n; j++) for (int k=j+1; k<=n; k++){
            long long v = D[j][i] + (long long)(A[k].c - A[j+1].r+1)*(A[k].c - A[j+1].r+1);
            if (A[j+1].r <= A[j].c)
                v -= (long long)(A[j].c - A[j+1].r+1)*(A[k].c-A[j+1].r+1);
            D[k][i+1] = min(D[k][i+1], v);
        }
    }
    return D[n][K];
}

Compilation message

aliens.cpp: In function 'long long int take_photos(int, int, int, std::vector<int>, std::vector<int>)':
aliens.cpp:22:45: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     for (int i = 0; i < n; i ++) arr.append({min(r[i], c[i]), max(r[i], c[i])});
                                             ^
aliens.cpp:22:79: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     for (int i = 0; i < n; i ++) arr.append({min(r[i], c[i]), max(r[i], c[i])});
                                                                               ^
aliens.cpp:26:5: warning: lambda expressions only available with -std=c++11 or -std=gnu++11
     });
     ^
aliens.cpp:26:6: error: no matching function for call to 'sort(std::vector<Point>::iterator, std::vector<Point>::iterator, take_photos(int, int, int, std::vector<int>, std::vector<int>)::<lambda(const Point&, const Point&)>)'
     });
      ^
In file included from /usr/include/c++/5/algorithm:62:0,
                 from aliens.cpp:3:
/usr/include/c++/5/bits/stl_algo.h:4689:5: note: candidate: template<class _RAIter> void std::sort(_RAIter, _RAIter)
     sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
     ^
/usr/include/c++/5/bits/stl_algo.h:4689:5: note:   template argument deduction/substitution failed:
aliens.cpp:26:6: note:   candidate expects 2 arguments, 3 provided
     });
      ^
In file included from /usr/include/c++/5/algorithm:62:0,
                 from aliens.cpp:3:
/usr/include/c++/5/bits/stl_algo.h:4718:5: note: candidate: template<class _RAIter, class _Compare> void std::sort(_RAIter, _RAIter, _Compare)
     sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
     ^
/usr/include/c++/5/bits/stl_algo.h:4718:5: note:   template argument deduction/substitution failed:
aliens.cpp: In substitution of 'template<class _RAIter, class _Compare> void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = take_photos(int, int, int, std::vector<int>, std::vector<int>)::<lambda(const Point&, const Point&)>]':
aliens.cpp:26:6:   required from here
aliens.cpp:26:6: error: template argument for 'template<class _RAIter, class _Compare> void std::sort(_RAIter, _RAIter, _Compare)' uses local type 'take_photos(int, int, int, std::vector<int>, std::vector<int>)::<lambda(const Point&, const Point&)>'
     });
      ^
aliens.cpp:26:6: error:   trying to instantiate 'template<class _RAIter, class _Compare> void std::sort(_RAIter, _RAIter, _Compare)'