답안 #282861

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
282861 2020-08-25T05:25:56 Z arnold518 방벽 (JOI15_walls) C++14
0 / 100
1288 ms 3364 KB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int MAXN = 2e5;

int N, M;
pii A[MAXN+10];
int B[MAXN+10];

int main()
{
	scanf("%d%d", &N, &M);
	for(int i=1; i<=N; i++) scanf("%d%d", &A[i].first, &A[i].second);
	//M++; B[1]=0;
	for(int i=1; i<=M; i++) scanf("%d", &B[i]);

	M=unique(B+1, B+N+1)-B-1;
	vector<int> V;
	V.push_back(B[1]);
	for(int i=2; i<M; i++)
	{
		if(B[i-1]<B[i] && B[i+1]<B[i]) V.push_back(B[i]);
		else if(B[i-1]>B[i] && B[i+1]>B[i]) V.push_back(B[i]);
	}
	V.push_back(B[M]);

	for(int i=0; i<V.size(); i++) B[i+1]=V[i];
	M=V.size();
	
	for(int j=1; j<=N; j++)
	{
		ll ans=0;
		for(int i=1; i<=M; i++)
		{
			if(A[j].first<=B[i] && B[i]<=A[j].second) continue;
			else if(B[i]<A[j].first)
			{
				int t=A[j].first-B[i];
				ans+=t; A[j].first-=t; A[j].second-=t;
			}
			else if(B[i]>A[j].second)
			{
				int t=B[i]-A[j].second;
				ans+=t; A[j].first+=t; A[j].second+=t;
			}
		}
		printf("%lld\n", ans);
	}
}

Compilation message

walls.cpp: In function 'int main()':
walls.cpp:31:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |  for(int i=0; i<V.size(); i++) B[i+1]=V[i];
      |               ~^~~~~~~~~
walls.cpp:16:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   16 |  scanf("%d%d", &N, &M);
      |  ~~~~~^~~~~~~~~~~~~~~~
walls.cpp:17:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   17 |  for(int i=1; i<=N; i++) scanf("%d%d", &A[i].first, &A[i].second);
      |                          ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
walls.cpp:19:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   19 |  for(int i=1; i<=M; i++) scanf("%d", &B[i]);
      |                          ~~~~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 512 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1285 ms 1660 KB Output is correct
2 Incorrect 1288 ms 3364 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 512 KB Output isn't correct
2 Halted 0 ms 0 KB -