Submission #996122


Source Code Expand

#include <vector>
#include <cstdio>
#include <algorithm>
#include <map>

using namespace std;

int main() {
	int N;
	scanf("%d", &N);
	vector<pair<int, int> > A;
	for(int i=0; i<N; ++i) {
		int a, b;
		scanf("%d%d", &a, &b);
		A.emplace_back(a, b);
	}
	if(A[0].first!=0 || A[1].second!=0 || A[1].first!=A[0].second) {
		printf("-1\n");
		return 0;
	}
	int ab = A[0].second;
	int sum = ab;
	{
		vector<int> vec(ab+1);
		for(auto & p : A) {
			if(p.first+p.second==ab) {
				++vec[p.first];
			}
			if(p.first+p.second<ab) {
				printf("-1\n");
				return 0;
			}
		}
		if(vec[0]!=1 || vec[ab]!=1) {
			printf("-1\n");
			return 0;
		}
		for(int i : vec) {
			if(i==0) {
				printf("-1\n");
				return 0;
			}
			if(2<=i) {
				sum += (i-1)*2;
			}
		}
	}
	{
		vector<pair<int, int> > vec;
		vector<pair<int, int> > vec2;
		for(auto & p : A) {
			if(ab<p.first+p.second) {
				int aa = p.first+p.second - ab;
				int aaHalf = (aa+1)>>1;
				int aaa = p.first-aaHalf;
				if(aa&1) {
					vec2.emplace_back(p.first-aaHalf, aaHalf);
					++sum;
				}
				else {
					vec.emplace_back(p.first-aaHalf, aaHalf);
					++sum;
				}
			}
		}
		sort(vec.begin(), vec.end());
		sort(vec2.begin(), vec2.end());
		{
			int beforeF = -1;
			int beforeS = 0;
			for(auto & p : vec) {
				if(p.first!=beforeF) {
					beforeF = p.first;
					beforeS = 0;
				}
				if(p.second!=beforeS && p.second!=beforeS+1) {
					printf("-1\n");
					return 0;
				}
				beforeS = p.second;
			}
		}
		{
			int beforeF = -10;
			int beforeS = 0;
			for(auto & p : vec2) {
				if(p.first!=beforeF) {
					if(s.first!=beforeF+1) {
						++sum;
					}
					beforeF = p.first;
					beforeS = 0;
				}
				if(p.second!=beforeS && p.second!=beforeS+1) {
					printf("-1\n");
					return 0;
				}
				beforeS = p.second;
			}
		}
	}
	printf("%d\n", sum);

	return 0;
}

Submission Info

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

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:88:9: error: ‘s’ was not declared in this scope
      if(s.first!=beforeF+1) {
         ^
./Main.cpp:10:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &N);
                 ^
./Main.cpp:14:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &a, &b);
                        ^