답안 #282817

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
282817 2020-08-25T02:39:29 Z arnold518 방벽 (JOI15_walls) C++14
10 / 100
3000 ms 2416 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); //M++;
	for(int i=1; i<=N; i++) scanf("%d%d", &A[i].first, &A[i].second);
	for(int i=1; i<=M; i++) scanf("%d", &B[i]);

	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:29:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |  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); //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:18:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   18 |  for(int i=1; i<=M; i++) scanf("%d", &B[i]);
      |                          ~~~~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 384 KB Output is correct
2 Correct 42 ms 2288 KB Output is correct
3 Correct 43 ms 2288 KB Output is correct
4 Correct 43 ms 2312 KB Output is correct
5 Correct 43 ms 2288 KB Output is correct
6 Correct 42 ms 2288 KB Output is correct
7 Correct 34 ms 2288 KB Output is correct
8 Correct 33 ms 1144 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1260 ms 1148 KB Output is correct
2 Execution timed out 3080 ms 2416 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 384 KB Output is correct
2 Correct 42 ms 2288 KB Output is correct
3 Correct 43 ms 2288 KB Output is correct
4 Correct 43 ms 2312 KB Output is correct
5 Correct 43 ms 2288 KB Output is correct
6 Correct 42 ms 2288 KB Output is correct
7 Correct 34 ms 2288 KB Output is correct
8 Correct 33 ms 1144 KB Output is correct
9 Correct 1260 ms 1148 KB Output is correct
10 Execution timed out 3080 ms 2416 KB Time limit exceeded
11 Halted 0 ms 0 KB -