Submission #162806

#TimeUsernameProblemLanguageResultExecution timeMemory
162806kikkatugnoArranging Shoes (IOI19_shoes)C++14
Compilation error
0 ms0 KiB
#include<iostream>
#include<set>
#include<vector>
using namespace::std;
 
set<pair<int,int>> s;
int st[800005];
 
int query(int i,int l,int r,int s,int e){
	if(s<=l && r<=e)
		return st[i];
	if(s>=r || e<=l)
		return 0;
	int mid=l+(r-l)/2;
	return query(i*2,l,mid,s,e)+query(i*2+1,mid,r,s,e);
}
 
void point_upd(int i,int l,int r,int ind){
	if(l+1==r && l==ind){
		st[i]++;
		return;
	}
	if(ind>=r || ind<l)
		return ;
	int mid=l+(r-l)/2;
	st[i]++;
	if(ind>=mid)
		point_upd(i*2+1,mid,r,ind);
	else point_upd(i*2,l,mid,ind);
}
 
int count_swaps(vector<int,allocator<int>> ar){
	int n=ar.size()/2;
	//cin>>n;
	assert(n==2);
	long long int ans=0;
	for(int i=0;i<2*n;i++)
		/*cin>>ar[i],*/s.insert({ar[i],i});
	//build(1,0,2*n);
	for(int i=0;i<2*n;i++)
		if(s.find({ar[i],i})!=s.end()){
			pair<int,int> t=*(s.lower_bound({-ar[i],0}));
			ans+=t.second-i-(ar[i]<0)-query(1,0,2*n,i,t.second);
			cout<<t.second<<' '<<i<<' '<<ar[i]<<' '<<query(1,0,2*n,i,t.second)<<'\n';
			point_upd(1,0,2*n,t.second);
			s.erase({ar[i],i});
			s.erase(t);
		}
	return ans;
}

Compilation message (stderr)

shoes.cpp: In function 'int count_swaps(std::vector<int, std::allocator<int> >)':
shoes.cpp:35:2: error: 'assert' was not declared in this scope
  assert(n==2);
  ^~~~~~
shoes.cpp:35:2: note: suggested alternative: 'qsort'
  assert(n==2);
  ^~~~~~
  qsort