Submission #211109

#TimeUsernameProblemLanguageResultExecution timeMemory
211109_Ice_Tea_Arranging Shoes (IOI19_shoes)C++14
100 / 100
111 ms19832 KiB
#include "shoes.h"
#include<bits/stdc++.h>
#define LLI long long int
#define pii pair<int,int>
#define ULTRA 2134567890
#define de(x) if( x && x == MODE)
#define MODE 0
using namespace std;

int cht[200007][2];
vector<int> keep[200007][2];

int n;
int bit[200007] = {};
bool v[200007] = {};

void add( int x, int d)
{
	x++;
	while( x <= n)
	{
		bit[x] += d;
		x += x & (-x);
	}
}

LLI query( int x)
{
	LLI sum = 0;
	x++;
	while( x)
	{
		sum += bit[x];
		x -= x & (-x);
	}
	return sum;
}

long long count_swaps(std::vector<int> s) {

	int i,j;

	n = s.size();
	for( i=n-1; i>0; i--)
	{
		if( s[i] < 0)
			keep[ -s[i] ][0].push_back(i);
		else
			keep[ s[i] ][1].push_back(i);
	}

	for( i=1; i<n; i++)
		add( i, 1);

	LLI ans = 0;
	for( i=0; i<n; i++)
	{
		if( v[i])
			continue;
		de(1)
		{
			printf(" i = %d\n", i);
		}
		v[i] = 1;

		int color = abs( s[i]);
		int match;
		if( s[i] < 0)
		{
			while( v[ keep[color][1].back() ])
				keep[color][1].pop_back();
			match = keep[color][1].back();
			de(1)
			{
				printf("match = %d\n", match);
			}
			ans += query( match) - 1;
			v[ match ] = 1;
		}
		else
		{
			while( v[ keep[color][0].back() ])
				keep[color][0].pop_back();
			match = keep[color][0].back();
			de(1)
			{
				printf("match = %d\n", match);
			}
			ans += query( match);
			v[ match ] = 1;
		}
		add( i, -1);
		add( match, -1);
		de(1) printf("ans = %d\n", ans);
	}

	return ans;
}
/*
int main()
{
	int i,j;
	int n;

	scanf("%d", &n);

	vector<int> s;
	for( i=0; i<n; i++)
	{
		int a;
		scanf("%d", &a);
		s.push_back(a);
	}
	LLI ans = count_swaps(s);
	printf("%lld\n", ans);
	return 0;
}
*/

Compilation message (stderr)

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:94:33: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long long int' [-Wformat=]
   de(1) printf("ans = %d\n", ans);
                                 ^
shoes.cpp:41:8: warning: unused variable 'j' [-Wunused-variable]
  int i,j;
        ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...