Submission #811104

#TimeUsernameProblemLanguageResultExecution timeMemory
811104OAleksaArranging Shoes (IOI19_shoes)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include "shoes.h"
 
#define f first
#define s second
using namespace std; 
 
const int maxn = 2e5 + 69;
set<int> l[maxn], r[maxn];
vector<int> f(maxn);
vector<int> pr(maxn);
void add(int v, int x) {
	for(int i = v;i < maxn;i += (i & -i))
		f[i] += x;
}

int qry(int v) {
	int res = 0;
	for(int i = v;i >= 1;i -= (i & -i)) 
		res += f[i];
	return res;
}

long long count_swaps(vector<int> s) {
	int n = s.size();
	vector<int> a(n + 1);
	for(int i = 0;i < n;i++) {
		a[i + 1] = s[i];
	}
	vector<int> vis(n + 1);
	vector<pair<int, int>> par;
	for(int i = 1;i <= n;i++) {
		if(a[i] < 0)
			l[abs(a[i])].insert(i);
		else
			r[a[i]].insert(i);
	}
	for(int i = 1;i <= n;i++) {
		if(a[i] < 0 && !vis[i]) {
			auto u = *r[abs(a[i])].upper_bound(i);
			r.erase(u);
			par.push_back({i, u});
			vis[i] = vis[u] = 1;
		}
		else if(a[i] > 0 && !vis[i]) {
			auto u = *l[a[i]].upper_bound(i);
			l.erase(u);
			par.push_back({i, u});
			vis[i] = vis[u] = 1;
		}
	}
	long long ans = 0;
	for(auto x : par) {
		int levi = x.f + qry(x.f);
		int desni = x.s + qry(x.s);
		if(a[x.f] < 0) 
			ans += (desni - levi - 1);
		else 
			ans += (desni - levi);
		add(x.f + 1, 1);
		add(x.s, -1);
	}
	return ans;
}
 
 
 
// int main()
// {
	  // ios_base::sync_with_stdio(false);
	  // cin.tie(0);
	  // cout.tie(0);
	  // int tt = 1;
		// //cin >> tt;
	  // while(tt--) {
			// int n;
			// cin >> n;
			// vector<int> a(2 * n);
			// for(int i = 0;i < 2 * n;i++)
				// cin >> a[i];
			// cout << count_swaps(a) << endl;
		// }
    // return 0;
// }

Compilation message (stderr)

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:41:6: error: request for member 'erase' in 'r', which is of non-class type 'std::set<int> [200069]'
   41 |    r.erase(u);
      |      ^~~~~
shoes.cpp:47:6: error: request for member 'erase' in 'l', which is of non-class type 'std::set<int> [200069]'
   47 |    l.erase(u);
      |      ^~~~~