Submission #1355926

#TimeUsernameProblemLanguageResultExecution timeMemory
1355926vuvietExamination (JOI19_examination)C++20
Compilation error
0 ms0 KiB
/**
 * Fenwick Tree + Sorted Vector
 * Replace Trie version
**/

#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define all(x) x.begin(), x.end()

const int N = 200005;

struct Query {
    int x, y, z, id;
};

int n, q, ny;
pair<int,int> a[N];
int ans[N];

vector<int> ys;
vector<pair<pair<int,int>, int>> evts; 
// {{x,id},type}
// type = 0 point
// type = 1 query

vector<int> bit[N];
Query qr[N];

bool cmp(auto A, auto B){
    if (A.fi.fi != B.fi.fi) return A.fi.fi > B.fi.fi;
    return A.se < B.se;
}

int pos(int y){
    return upper_bound(all(ys), y) - ys.begin();
}

void addValue(int i, int val){
    for(i = ny - i + 1; i <= ny; i += i & -i)
        bit[i].push_back(val);
}

void build(){
    for(int i=1;i<=ny;i++)
        sort(all(bit[i]));
}

int getCnt(int i, int val){
    int res = 0;
    for(i = ny - i + 1; i > 0; i -= i & -i)
        res += upper_bound(all(bit[i]), val) - bit[i].begin();
    return res;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    if (fopen("input.inp","r")){
        freopen("input.inp","r",stdin);
        freopen("input.out","w",stdout);
    }

    cin >> n >> q;

    for(int i=1;i<=n;i++){
        cin >> a[i].fi >> a[i].se;
        ys.push_back(a[i].se);
        evts.push_back({{a[i].fi,i},0});
    }

    for(int i=1;i<=q;i++){
        cin >> qr[i].x >> qr[i].y >> qr[i].z;
        qr[i].id = i;
        ys.push_back(qr[i].y);
        evts.push_back({{qr[i].x,i},1});
    }

    sort(all(ys));
    ys.erase(unique(all(ys)), ys.end());
    ny = ys.size();

    sort(all(evts), cmp);

    // build all points first
    for(auto e : evts){
        if(e.se == 0){
            int id = e.fi.se;
            addValue(pos(a[id].se), a[id].fi + a[id].se);
        }
    }

    build();

    // process queries offline
    int ptr = 0;
    vector<pair<int,int>> pts;
    for(int i=1;i<=n;i++) pts.push_back({a[i].fi,i});
    sort(pts.rbegin(), pts.rend());

    for(int i=1;i<=q;i++);

    int cur = 0;

    for(auto e : evts){
        if(e.se == 1){
            int id = e.fi.se;

            int val = max(qr[id].x + qr[id].y, qr[id].z);

            ans[id] = getCnt(pos(qr[id].y), val);
        }
    }

    for(int i=1;i<=q;i++)
        cout << ans[i] << '\n';
}

Compilation message (stderr)

examination.cpp: In function 'int main()':
examination.cpp:86:9: error: no matching function for call to 'sort(std::vector<std::pair<std::pair<int, int>, int> >::iterator, std::vector<std::pair<std::pair<int, int>, int> >::iterator, <unresolved overloaded function type>)'
   86 |     sort(all(evts), cmp);
      |     ~~~~^~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from examination.cpp:6:
/usr/include/c++/13/bits/stl_algo.h:4851:5: note: candidate: 'template<class _RAIter> constexpr void std::sort(_RAIter, _RAIter)'
 4851 |     sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
      |     ^~~~
/usr/include/c++/13/bits/stl_algo.h:4851:5: note:   template argument deduction/substitution failed:
examination.cpp:86:9: note:   candidate expects 2 arguments, 3 provided
   86 |     sort(all(evts), cmp);
      |     ~~~~^~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algo.h:4882:5: note: candidate: 'template<class _RAIter, class _Compare> constexpr void std::sort(_RAIter, _RAIter, _Compare)'
 4882 |     sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
      |     ^~~~
/usr/include/c++/13/bits/stl_algo.h:4882:5: note:   template argument deduction/substitution failed:
examination.cpp:86:9: note:   couldn't deduce template parameter '_Compare'
   86 |     sort(all(evts), cmp);
      |     ~~~~^~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:73:
/usr/include/c++/13/pstl/glue_algorithm_defs.h:292:1: note: candidate: 'template<class _ExecutionPolicy, class _RandomAccessIterator, class _Compare> __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> std::sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _Compare)'
  292 | sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp);
      | ^~~~
/usr/include/c++/13/pstl/glue_algorithm_defs.h:292:1: note:   template argument deduction/substitution failed:
examination.cpp:86:9: note:   candidate expects 4 arguments, 3 provided
   86 |     sort(all(evts), cmp);
      |     ~~~~^~~~~~~~~~~~~~~~
/usr/include/c++/13/pstl/glue_algorithm_defs.h:296:1: note: candidate: 'template<class _ExecutionPolicy, class _RandomAccessIterator> __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> std::sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator)'
  296 | sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last);
      | ^~~~
/usr/include/c++/13/pstl/glue_algorithm_defs.h:296:1: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/13/pstl/glue_algorithm_defs.h:15:
/usr/include/c++/13/pstl/execution_defs.h: In substitution of 'template<class _ExecPolicy, class _Tp> using __pstl::__internal::__enable_if_execution_policy = typename std::enable_if<__pstl::execution::v1::is_execution_policy<typename std::remove_cv<typename std::remove_reference<_Tp>::type>::type>::value, _Tp>::type [with _ExecPolicy = __gnu_cxx::__normal_iterator<std::pair<std::pair<int, int>, int>*, std::vector<std::pair<std::pair<int, int>, int> > >; _Tp = void]':
/usr/include/c++/13/pstl/glue_algorithm_defs.h:296:1:   required by substitution of 'template<class _ExecutionPolicy, class _RandomAccessIterator> __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> std::sort(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator) [with _ExecutionPolicy = __gnu_cxx::__normal_iterator<std::pair<std::pair<int, int>, int>*, std::vector<std::pair<std::pair<int, int>, int> > >; _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::pair<std::pair<int, int>, int>*, std::vector<std::pair<std::pair<int, int>, int> > >]'
examination.cpp:86:9:   required from here
/usr/include/c++/13/pstl/execution_defs.h:150:7: error: no type named 'type' in 'struct std::enable_if<false, void>'
  150 | using __enable_if_execution_policy =
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
examination.cpp:63:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   63 |         freopen("input.inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
examination.cpp:64:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   64 |         freopen("input.out","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~