제출 #83523

#제출 시각아이디문제언어결과실행 시간메모리
83523nikolapesic2802로봇 (IOI13_robots)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #include "robots.h" #define pb push_back using namespace std; pair<int,int> maxx=make_pair(INT_MAX,INT_MAX); int putaway(int a, int b, int t, int x[], int y[], int W[], int S[]) { sort(x,x+a); sort(y,y+a); reverse(y,y+a); vector<pair<int,int> > items(t); for(int i=0;i<t;i++) { items[i].first=W[i]; items[i].second=S[i]; } items.pb(maxx); sort(items.begin(),items.end()); assert(*items.back()==maxx); int l=1,r=t+5; while(l<r) { int mid=(l+r)/2; //printf("%i\n",mid); int j=0; int test=true; multiset<int,greater<int> > s; for(int i=0;i<a;i++) { //printf("Usao za %i\n",x[i]); while(items[j].first<x[i]) { //printf("Dodajem %i %i\n",items[j].first,items[j].second); s.insert(items[j].second); j++; } for(int k=0;k<mid;k++) { if(s.empty()) break; s.erase(s.begin()); //printf("brisem!\n"); } } for(;j<t;j++) s.insert(items[j].second); for(int i=0;i<b;i++) { //printf("usao! %i\n",y[i]); for(int k=0;k<mid;k++) { if(s.size()==0) { break; break; } if(*s.begin()<y[i]) s.erase(s.begin()); else { break; break; } } } if(s.size()!=0) test=false; if(test) { r=mid; } else { l=mid+1; } } if(l==t+5) return -1; return l; } #define fail(s, x...) do { \ fprintf(stderr, s "\n", ## x); \ exit(1); \ } while(0) #define MAX_A 50000 #define MAX_B 50000 #define MAX_T 500000 static int X[MAX_A]; static int Y[MAX_B]; static int W[MAX_T]; static int S[MAX_T]; int main() { int A, B, T, i; int res; FILE *f = fopen("sample2.in", "r"); if (!f) fail("Failed to open input file."); res = fscanf(f, "%d", &A); if (res != 1) fail("Failed to read A from input file."); if (A < 0 || A > MAX_A) fail("A is out of bounds."); res = fscanf(f, "%d", &B); if (res != 1) fail("Failed to read B from input file."); if (B < 0 || B > MAX_B) fail("B is out of bounds."); res = fscanf(f, "%d", &T); if (res != 1) fail("Failed to read T from input file."); if (T < 1 || T > MAX_T) fail("T is out of bounds."); for (i = 0; i < A; i++) { res = fscanf(f, "%d", &X[i]); if (res != 1) fail("Failed to read data from input file."); } for (i = 0; i < B; i++) { res = fscanf(f, "%d", &Y[i]); if (res != 1) fail("Failed to read data from input file."); } for (i = 0; i < T; i++) { res = fscanf(f, "%d%d", &W[i], &S[i]); if (res != 2) fail("Failed to read data from input file."); } fclose(f); int answer = putaway(A, B, T, X, Y, W, S); printf("%d\n", answer); return 0; }

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

In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp: In function 'int putaway(int, int, int, int*, int*, int*, int*)':
robots.cpp:18:12: error: no match for 'operator*' (operand type is '__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, int> > >::value_type {aka std::pair<int, int>}')
     assert(*items.back()==maxx);
            ^~~~~~~~~~~~~
In file included from /usr/include/c++/7/ccomplex:39:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from robots.cpp:1:
/usr/include/c++/7/complex:386:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator*(const std::complex<_Tp>&, const std::complex<_Tp>&)
     operator*(const complex<_Tp>& __x, const complex<_Tp>& __y)
     ^~~~~~~~
/usr/include/c++/7/complex:386:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp:18:24: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, int> > >::value_type {aka std::pair<int, int>}' is not derived from 'const std::complex<_Tp>'
     assert(*items.back()==maxx);
                        ^
In file included from /usr/include/c++/7/ccomplex:39:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from robots.cpp:1:
/usr/include/c++/7/complex:395:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator*(const std::complex<_Tp>&, const _Tp&)
     operator*(const complex<_Tp>& __x, const _Tp& __y)
     ^~~~~~~~
/usr/include/c++/7/complex:395:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp:18:24: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, int> > >::value_type {aka std::pair<int, int>}' is not derived from 'const std::complex<_Tp>'
     assert(*items.back()==maxx);
                        ^
In file included from /usr/include/c++/7/ccomplex:39:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from robots.cpp:1:
/usr/include/c++/7/complex:404:5: note: candidate: template<class _Tp> std::complex<_Tp> std::operator*(const _Tp&, const std::complex<_Tp>&)
     operator*(const _Tp& __x, const complex<_Tp>& __y)
     ^~~~~~~~
/usr/include/c++/7/complex:404:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp:18:24: note:   candidate expects 2 arguments, 1 provided
     assert(*items.back()==maxx);
                        ^
In file included from /usr/include/c++/7/valarray:592:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:95,
                 from robots.cpp:1:
/usr/include/c++/7/bits/valarray_after.h:404:5: note: candidate: template<class _Dom1, class _Dom2> std::_Expr<std::_BinClos<std::__multiplies, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__multiplies, typename _Dom1::value_type>::result_type> std::operator*(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::_Expr<_Dom2, typename _Dom2::value_type>&)
     _DEFINE_EXPR_BINARY_OPERATOR(*, __multiplies)
     ^
/usr/include/c++/7/bits/valarray_after.h:404:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp:18:24: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, int> > >::value_type {aka std::pair<int, int>}' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
     assert(*items.back()==maxx);
                        ^
In file included from /usr/include/c++/7/valarray:592:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:95,
                 from robots.cpp:1:
/usr/include/c++/7/bits/valarray_after.h:404:5: note: candidate: template<class _Dom> std::_Expr<std::_BinClos<std::__multiplies, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename std::__fun<std::__multiplies, typename _Dom1::value_type>::result_type> std::operator*(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)
     _DEFINE_EXPR_BINARY_OPERATOR(*, __multiplies)
     ^
/usr/include/c++/7/bits/valarray_after.h:404:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp:18:24: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, int> > >::value_type {aka std::pair<int, int>}' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
     assert(*items.back()==maxx);
                        ^
In file included from /usr/include/c++/7/valarray:592:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:95,
                 from robots.cpp:1:
/usr/include/c++/7/bits/valarray_after.h:404:5: note: candidate: template<class _Dom> std::_Expr<std::_BinClos<std::__multiplies, std::_Constant, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__multiplies, typename _Dom1::value_type>::result_type> std::operator*(const typename _Dom::value_type&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)
     _DEFINE_EXPR_BINARY_OPERATOR(*, __multiplies)
     ^
/usr/include/c++/7/bits/valarray_after.h:404:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp:18:24: note:   candidate expects 2 arguments, 1 provided
     assert(*items.back()==maxx);
                        ^
In file included from /usr/include/c++/7/valarray:592:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:95,
                 from robots.cpp:1:
/usr/include/c++/7/bits/valarray_after.h:404:5: note: candidate: template<class _Dom> std::_Expr<std::_BinClos<std::__multiplies, std::_Expr, std::_ValArray, _Dom, typename _Dom::value_type>, typename std::__fun<std::__multiplies, typename _Dom1::value_type>::result_type> std::operator*(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::valarray<typename _Dom::value_type>&)
     _DEFINE_EXPR_BINARY_OPERATOR(*, __multiplies)
     ^
/usr/include/c++/7/bits/valarray_after.h:404:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp:18:24: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, int> > >::value_type {aka std::pair<int, int>}' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
     assert(*items.back()==maxx);
                        ^
In file included from /usr/include/c++/7/valarray:592:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:95,
                 from robots.cpp:1:
/usr/include/c++/7/bits/valarray_after.h:404:5: note: candidate: template<class _Dom> std::_Expr<std::_BinClos<std::__multiplies, std::_ValArray, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__multiplies, typename _Dom1::value_type>::result_type> std::operator*(const std::valarray<typename _Dom::value_type>&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)
     _DEFINE_EXPR_BINARY_OPERATOR(*, __multiplies)
     ^
/usr/include/c++/7/bits/valarray_after.h:404:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp:18:24: note:   candidate expects 2 arguments, 1 provided
     assert(*items.back()==maxx);
                        ^
In file included from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:95:0,
                 from robots.cpp:1:
/usr/include/c++/7/valarray:1174:1: note: candidate: template<class _Tp> std::_Expr<std::_BinClos<std::__multiplies, std::_ValArray, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__multiplies, _Tp>::result_type> std::operator*(const std::valarray<_Tp>&, const std::valarray<_Tp>&)
 _DEFINE_BINARY_OPERATOR(*, __multiplies)
 ^
/usr/include/c++/7/valarray:1174:1: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp:18:24: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, int> > >::value_type {aka std::pair<int, int>}' is not derived from 'const std::valarray<_Tp>'
     assert(*items.back()==maxx);
                        ^
In file included from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:95:0,
                 from robots.cpp:1:
/usr/include/c++/7/valarray:1174:1: note: candidate: template<class _Tp> std::_Expr<std::_BinClos<std::__multiplies, std::_ValArray, std::_Constant, _Tp, _Tp>, typename std::__fun<std::__multiplies, _Tp>::result_type> std::operator*(const std::valarray<_Tp>&, const _Tp&)
 _DEFINE_BINARY_OPERATOR(*, __multiplies)
 ^
/usr/include/c++/7/valarray:1174:1: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp:18:24: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, int> > >::value_type {aka std::pair<int, int>}' is not derived from 'const std::valarray<_Tp>'
     assert(*items.back()==maxx);
                        ^
In file included from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:95:0,
                 from robots.cpp:1:
/usr/include/c++/7/valarray:1174:1: note: candidate: template<class _Tp> std::_Expr<std::_BinClos<std::__multiplies, std::_Constant, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__multiplies, _Tp>::result_type> std::operator*(const _Tp&, const std::valarray<_Tp>&)
 _DEFINE_BINARY_OPERATOR(*, __multiplies)
 ^
/usr/include/c++/7/valarray:1174:1: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/7/cassert:44:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:33,
                 from robots.cpp:1:
robots.cpp:18:24: note:   candidate expects 2 arguments, 1 provided
     assert(*items.back()==maxx);
                        ^