Submission #380582

#TimeUsernameProblemLanguageResultExecution timeMemory
380582mariowongExamination (JOI19_examination)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; struct node{ long long maths,ict,sum; int indx; }a[200005]; bool cmp(node a1,node a2){ return a1.maths < a2.maths; } int n,m,pt,seg[800005]; pair <long long,int> d[200005]; long long ct,now,ans[200005]; vector <pair<long long,long long> > u; vector <pair<pair<long long,long long>,int> > q; void build (int id,int x,int y){ if (x == y) seg[id]=0; else { int mid=(x+y)/2; if (seg[id] != 0){ build(id*2,x,mid); build(id*2+1,mid+1,y); } seg[id]=0; } } void update(int id,int x,int y,int pos){ if (x == y) seg[id]++; else { int mid=(x+y)/2; if (pos <= mid) update(id*2,x,mid,pos); else update(id*2+1,mid+1,y,pos); seg[id]=seg[id*2]+seg[id*2+1]; } } int query(int id,int x,int y,int l,int r){ if (l <= x && y <= r) return seg[id]; if (l > y || r < x) return 0; int mid=(x+y)/2; return query(id*2,x,mid,l,r)+query(id*2+1,mid+1,y,l,r); } void solve(int x,int y){ if (x == y); else { int mid=(x+y)/2; u.clear(); q.clear(); build(1,1,ct); for (int i=x;i<=mid;i++){ if (a[i].indx == 0) u.push_back(make_pair(a[i].ict,a[i].sum)); } for (int i=mid+1;i<=y;i++){ if (a[i].indx != 0) q.push_back(make_pair(make_pair(a[i].ict,a[i].sum),a[i].indx)); } sort(u.begin(),u.end()); sort(q.begin(),q.end()); reverse(u.begin(),u.end()); reverse(q.begin(),q.end()); pt=0; for (int i=0;i<q.size();i++){ while (pt < (int)u.size() && u[pt].first >= q[i].first.first){ update(1,1,ct,u[pt].second); pt++; } ans[q[i].second]+=query(1,1,ct,q[i].first.second,ct); } solve(x,mid); solve(mid+1,y); } } int main(){ ios::sync_with_stdio(false); cin >> n >> m; for (int i=1;i<=n;i++){ cin >> a[i].maths >> a[i].ict; a[i].sum=a[i].maths+a[i].ict; d[i]=make_pair(a[i].sum,i); } for (int i=n+1;i<=n+m;i++){ cin >> a[i].maths >> a[i].ict >> a[i].sum; a[i].indx=i-n; d[i]=make_pair(a[i].sum,i); } sort(d+1,d+1+n+m); now=1; d[n+m+1]=1e18; for (int i=2;i<=n+m+1;i++){ if (d[i].first != d[i-1].first){ ct++; for (int j=now;j<i;j++){ a[d[j].second].sum=ct; } now=i; } } sort(a+1,a+1+n+m,cmp); reverse(a+1,a+1+n+m); solve(1,n+m); for (int i=1;i<=m;i++){ cout << ans[i] << "\n"; } return 0; }

Compilation message (stderr)

examination.cpp: In function 'void solve(int, int)':
examination.cpp:66:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::pair<long long int, long long int>, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |   for (int i=0;i<q.size();i++){
      |                ~^~~~~~~~~
examination.cpp: In function 'int main()':
examination.cpp:90:11: error: no match for 'operator=' (operand types are 'std::pair<long long int, int>' and 'double')
   90 |  d[n+m+1]=1e18;
      |           ^~~~
In file included from /usr/include/c++/9/bits/stl_algobase.h:64,
                 from /usr/include/c++/9/bits/char_traits.h:39,
                 from /usr/include/c++/9/ios:40,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from examination.cpp:1:
/usr/include/c++/9/bits/stl_pair.h:378:7: note: candidate: 'std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(typename std::conditional<std::__and_<std::is_copy_assignable<_T1>, std::is_copy_assignable<_T2> >::value, const std::pair<_T1, _T2>&, const std::__nonesuch_no_braces&>::type) [with _T1 = long long int; _T2 = int; typename std::conditional<std::__and_<std::is_copy_assignable<_T1>, std::is_copy_assignable<_T2> >::value, const std::pair<_T1, _T2>&, const std::__nonesuch_no_braces&>::type = const std::pair<long long int, int>&]'
  378 |       operator=(typename conditional<
      |       ^~~~~~~~
/usr/include/c++/9/bits/stl_pair.h:381:51: note:   no known conversion for argument 1 from 'double' to 'std::conditional<true, const std::pair<long long int, int>&, const std::__nonesuch_no_braces&>::type' {aka 'const std::pair<long long int, int>&'}
  378 |       operator=(typename conditional<
      |                 ~~~~~~~~~~~~~~~~~~~~~              
  379 |   __and_<is_copy_assignable<_T1>,
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
  380 |          is_copy_assignable<_T2>>::value,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
  381 |   const pair&, const __nonesuch_no_braces&>::type __p)
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_pair.h:389:7: note: candidate: 'std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(typename std::conditional<std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value, std::pair<_T1, _T2>&&, std::__nonesuch_no_braces&&>::type) [with _T1 = long long int; _T2 = int; typename std::conditional<std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value, std::pair<_T1, _T2>&&, std::__nonesuch_no_braces&&>::type = std::pair<long long int, int>&&]'
  389 |       operator=(typename conditional<
      |       ^~~~~~~~
/usr/include/c++/9/bits/stl_pair.h:392:41: note:   no known conversion for argument 1 from 'double' to 'std::conditional<true, std::pair<long long int, int>&&, std::__nonesuch_no_braces&&>::type' {aka 'std::pair<long long int, int>&&'}
  389 |       operator=(typename conditional<
      |                 ~~~~~~~~~~~~~~~~~~~~~    
  390 |   __and_<is_move_assignable<_T1>,
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
  391 |          is_move_assignable<_T2>>::value,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  392 |   pair&&, __nonesuch_no_braces&&>::type __p)
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_pair.h:405:2: note: candidate: 'template<class _U1, class _U2> typename std::enable_if<std::__and_<std::is_assignable<_T1&, const _U1&>, std::is_assignable<_T2&, const _U2&> >::value, std::pair<_T1, _T2>&>::type std::pair<_T1, _T2>::operator=(const std::pair<_U1, _U2>&) [with _U1 = _U1; _U2 = _U2; _T1 = long long int; _T2 = int]'
  405 |  operator=(const pair<_U1, _U2>& __p)
      |  ^~~~~~~~
/usr/include/c++/9/bits/stl_pair.h:405:2: note:   template argument deduction/substitution failed:
examination.cpp:90:11: note:   mismatched types 'const std::pair<_T1, _T2>' and 'double'
   90 |  d[n+m+1]=1e18;
      |           ^~~~
In file included from /usr/include/c++/9/bits/stl_algobase.h:64,
                 from /usr/include/c++/9/bits/char_traits.h:39,
                 from /usr/include/c++/9/ios:40,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from examination.cpp:1:
/usr/include/c++/9/bits/stl_pair.h:416:2: note: candidate: 'template<class _U1, class _U2> typename std::enable_if<std::__and_<std::is_assignable<_T1&, _U1&&>, std::is_assignable<_T2&, _U2&&> >::value, std::pair<_T1, _T2>&>::type std::pair<_T1, _T2>::operator=(std::pair<_U1, _U2>&&) [with _U1 = _U1; _U2 = _U2; _T1 = long long int; _T2 = int]'
  416 |  operator=(pair<_U1, _U2>&& __p)
      |  ^~~~~~~~
/usr/include/c++/9/bits/stl_pair.h:416:2: note:   template argument deduction/substitution failed:
examination.cpp:90:11: note:   mismatched types 'std::pair<_T1, _T2>' and 'double'
   90 |  d[n+m+1]=1e18;
      |           ^~~~