Submission #149288

#TimeUsernameProblemLanguageResultExecution timeMemory
149288(παρα)γεμιστά (#200)Crosses on the Grid (FXCUP4_cross)C++17
Compilation error
0 ms0 KiB
#include "cross.h" #include<vector> #include<iostream> #include<algorithm> #include<map> #include<set> #define ll long long #define pi pair < ll,ll > #define rep(i,a,b) for(int i = a;i < b;i++) #define MAXN 300004 using namespace std; pi ar[MAXN]; ll seg[4*MAXN]; map < ll,ll > mapper; map < ll,ll > inverse; ll cnt = 1; void update(ll low,ll high,ll pos,ll slow) { if(low == high && low == slow) { seg[pos]++; return; } if(low > slow || high < slow) return; ll mid = (low+high)/2; update(low,mid,pos*2+1,slow); update(mid+1,high,pos*2+2,slow); seg[pos] = seg[pos*2+1]+seg[pos*2+2]; return; } ll query(ll low,ll high,ll pos,ll val) { ll mid = (low+high)/2; if(low == high) return low; if(seg[pos*2+1] >= val) return query(low,mid,pos*2+1,val); else return query(mid+1,high,pos*2+2,val-seg[pos*2+1]); } long long SelectCross(int K, std::vector<int> I, std::vector<int> O) { int n = I.size(); vector < ll > v; ll ans =0; rep(i,0,n) { ar[i].first = -O[i]; ar[i].second = I[i]; ans=max(ans,O[i]*I[i]*4-I[i]*I[i]); v.push_back(I[i]); } return ans; sort(v.begin(),v.end()); rep(i,0,v.size()) { if(!mapper[v[i]]) { mapper[v[i]]= cnt; inverse[cnt] = v[i]; cnt++; } } sort(ar,ar+n); ll ans = 0; set < ll > used; rep(i,0,n) { ar[i].first*=-1; update(0,n,0,mapper[ar[i].second]); used.insert(ar[i].second); ll peaki = ar[i].first*2; if(seg[0] > K) { ll maxim = inverse[query(0,n,0,K)]; if(peaki > maxim) peaki = maxim; else { ll cand1 = *(used.lower_bound(peaki)); ll cand2 = *(used.upper_bound(peaki)); if(cand2 > maxim) peaki = cand1; else if(ar[i].first*cand1-cand1*cand1 >= ar[i].first*cand2-cand2*cand2) peaki = cand1; else peaki = cand2; } // cout << peaki << endl; ans = max(ans,4*ar[i].first*peaki-peaki*peaki); } } return ans; }

Compilation message (stderr)

cross.cpp: In function 'long long int SelectCross(int, std::vector<int>, std::vector<int>)':
cross.cpp:62:42: error: no matching function for call to 'max(long long int&, __gnu_cxx::__alloc_traits<std::allocator<int> >::value_type)'
         ans=max(ans,O[i]*I[i]*4-I[i]*I[i]);
                                          ^
In file included from /usr/include/c++/7/vector:60:0,
                 from cross.h:2,
                 from cross.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:219:5: note: candidate: template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)
     max(const _Tp& __a, const _Tp& __b)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:219:5: note:   template argument deduction/substitution failed:
cross.cpp:62:42: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and '__gnu_cxx::__alloc_traits<std::allocator<int> >::value_type {aka int}')
         ans=max(ans,O[i]*I[i]*4-I[i]*I[i]);
                                          ^
In file included from /usr/include/c++/7/vector:60:0,
                 from cross.h:2,
                 from cross.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:265:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:265:5: note:   template argument deduction/substitution failed:
cross.cpp:62:42: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and '__gnu_cxx::__alloc_traits<std::allocator<int> >::value_type {aka int}')
         ans=max(ans,O[i]*I[i]*4-I[i]*I[i]);
                                          ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from cross.cpp:4:
/usr/include/c++/7/bits/stl_algo.h:3462:5: note: candidate: template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)
     max(initializer_list<_Tp> __l)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3462:5: note:   template argument deduction/substitution failed:
cross.cpp:62:42: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
         ans=max(ans,O[i]*I[i]*4-I[i]*I[i]);
                                          ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from cross.cpp:4:
/usr/include/c++/7/bits/stl_algo.h:3468:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)
     max(initializer_list<_Tp> __l, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
cross.cpp:62:42: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
         ans=max(ans,O[i]*I[i]*4-I[i]*I[i]);
                                          ^
cross.cpp:9:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define rep(i,a,b) for(int i = a;i < b;i++)
cross.cpp:69:9:
     rep(i,0,v.size())
         ~~~~~~~~~~~~                
cross.cpp:69:5: note: in expansion of macro 'rep'
     rep(i,0,v.size())
     ^~~
cross.cpp:80:8: error: redeclaration of 'long long int ans'
     ll ans = 0;
        ^~~
cross.cpp:55:5: note: 'long long int ans' previously declared here
  ll ans =0;
     ^~~