Submission #1830492


Source Code Expand

#include <bits/stdc++.h>
#define xx first
#define yy second
#define mp make_pair
#define pb push_back
#define fill( x, y ) memset( x, y, sizeof x )
#define copy( x, y ) memcpy( x, y, sizeof x )
using namespace std;

typedef long long LL;
typedef pair < int, int > pa;

inline int read()
{
	int sc = 0, f = 1; char ch = getchar();
	while( ch < '0' || ch > '9' ) { if( ch == '-' ) f = -1; ch = getchar(); }
	while( ch >= '0' && ch <= '9' ) sc = sc * 10 + ch - '0', ch = getchar();
	return sc * f;
}

const int MAXN = 100005;

int n, a[MAXN], b[MAXN];
map < pa, bool > cnt;
pa c[MAXN];

inline void GG() { puts( "-1" ); exit( 0 ); }

int main()
{
#ifdef wxh010910
	freopen( "data.in", "r", stdin );
#endif
	n = read();
	for( int i = 1 ; i <= n ; i++ )
	{
		a[ i ] = read(), b[ i ] = read(), c[ i ] = mp( a[ i ] + b[ i ], b[ i ] );
		if( !a[ i ] && i != 1 ) GG();
		if( !b[ i ] && i != 2 ) GG();
		cnt[ mp( a[ i ], b[ i ] ) ] = 1;
	}
	if( a[ 1 ] || b[ 2 ] ) GG();
	sort( c + 1, c + n + 1 );
	int ret = n - 1 << 1;
	for( int l = 1, r = 1 ; l <= n ; l = r )
	{
		while( r <= n && c[ r ].xx == c[ l ].xx )
		{
			int x = c[ r ].xx - c[ r ].yy, y = c[ r ].yy;
			if( x )
			{
				bool flag = false;
				for( int d = -1 ; d <= 1 ; d++ ) if( cnt.find( mp( x - 1, y + d ) ) != cnt.end() ) flag = true;
				if( !flag ) GG();
			}
			if( y )
			{
				bool flag = false;
				for( int d = -1 ; d <= 1 ; d++ ) if( cnt.find( mp( x + d, y - 1 ) ) != cnt.end() ) flag = true;
				if( !flag ) GG();
			}
			r++;
		}
		for( int i = l, j = l, last = 0, left = 0 ; i < r ; i = j )
		{
			while( j < r && c[ j ].yy == c[ i ].yy ) j++;
			int now = j - i, del = 0;

			if( cnt.find( mp( c[ i ].xx - c[ i ].yy - 1, c[ i ].yy - 1 ) ) != cnt.end() ) ret -= now, last=c[i].yy,left=min(now,left),continue;;
            if( c[ i ].yy == last + 1 ) del = min( now, left ), ret -= del;
			last = c[ i ].yy; left = now;
		}
	}
	return printf( "%d\n", ret ), 0;
}

Submission Info

Submission Time
Task A - Distance Pairs
User munaiyi
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2004 Byte
Status CE

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:69:126: error: expected primary-expression before ‘continue’
    if( cnt.find( mp( c[ i ].xx - c[ i ].yy - 1, c[ i ].yy - 1 ) ) != cnt.end() ) ret -= now, last=c[i].yy,left=min(now,left),continue;;
                                                                                                                              ^