Submission #156027

# Submission time Handle Problem Language Result Execution time Memory
156027 2019-10-02T19:25:31 Z giorgikob Arranging Shoes (IOI19_shoes) C++14
Compilation error
0 ms 0 KB
#include<bits/stdc++.h>
using namespace std;

int n,r,pos,l,x;
 
long long ans;
 
std::vector<int>locl[500001],locr[500001],s;

int fix[500001];
int indl[500001],indr[500001];
 
int tree[800001];
void upd(int node,int tl,int tr,int pos){
	
	if(tl==tr){
		tree[node] = 1;
		return;
	}
	
	int mid = (tl+tr)/2;
	
	if(pos<=mid)
		upd(node*2,tl,mid,pos);
	else
		upd(node*2+1,mid+1,tr,pos);
	
	tree[node] = tree[node*2] + tree[node*2+1];
}
 
int get(int node,int tl,int tr){
	
	if(r<tl || tr<l)return 0;
	
	if(tr<=r && l<=tl)return tree[node];
	
	int mid = (tr+tl)/2;
	
	int x = get(node*2,tl,mid);
	int y = get(node*2+1,mid+1,tr);
	
	return x+y;
}
 
long long count_swaps(std::vector<int> s) {
	
	for(int i=0;i<n;i++){
		if(s[i]<0){
			locl[-s[i]].push_back(i);
		} else {
			locr[s[i]].push_back(i);
		}
	}
	
	for(int i=0;i<n;i++)
	if(!fix[i]){
		if(s[i]<0){
			int loc = locr[ -s[i] ][ indr[ -s[i] ] ];
			//cout<<loc<<" 1111"<<endl;
			r = loc;
			l = i+1;
			ans += loc - i - 1 - get(1,0,n-1);
			//cout<<ans<<" 111"<<endl;
			indr[ -s[i] ] ++;
			indl[ -s[i] ] ++;
			fix[loc]=1;
			upd(1,0,n-1,loc);
			
		} else {
			int loc = locl[ s[i] ][ indl[ s[i] ] ];
			//cout<<loc<<endl;
			r = loc;
			l = i+1;
			ans += loc - i - get(1,0,n-1);
			//cout<<ans<<endl;
			indl[ s[i] ] ++;
			indr[ s[i] ] ++;
			fix[loc]=1;
			upd(1,0,n-1,loc);
		}
	}
	
	return ans;
}

int main(){
    
    cin>>n;
    n*=2;
    for(int i=0;i<n;i++){
        cin>>x;
        s.push_back(x);
    }
    
    cout<< count_swaps(s) <<endl;
}

Compilation message

/tmp/ccy6b2cQ.o: In function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'
/tmp/ccuL4TZW.o:shoes.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status