답안 #283574

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
283574 2020-08-26T01:54:58 Z arnold518 World of Tank (innopolis2018_final_E) C++14
0 / 100
1 ms 512 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 = 5000;
const int MAXM = 1e6;

int N, M1, M2, T;
int A[MAXM+10], B[MAXM+10];
int S[10][MAXN+10];

int bef[10][MAXN+10];

int main()
{
	scanf("%d%d%d%d", &N, &M1, &M2, &T);
	for(int i=1; i<=M1; i++) scanf("%d", &A[i]), S[1][A[i]]=1;
	for(int i=1; i<=M2; i++) scanf("%d", &B[i]), S[2][B[i]]=1;

	memset(bef, -1, sizeof(bef));
	queue<pii> Q;
	Q.push({1, 0}); bef[1][0]=0;
	pii p={-1, -1};
	while(!Q.empty())
	{
		pii now=Q.front(); Q.pop();
		if(now.second==N+1) { p=now; continue; }
		if(!S[now.first][now.second+1] && bef[now.first][now.second+1]==-1)
		{
			bef[now.first][now.second+1]=1;
			Q.push({now.first, now.second+1});
		}
		if(!S[3-now.first][now.second] && bef[3-now.first][now.second]==-1)
		{
			bef[3-now.first][now.second]=2;
			Q.push({3-now.first, now.second});
		}
	}

	if(p.first==-1) return !printf("No\n");
	vector<int> ans;
	while(1)
	{
		if(p==pii(1, 0)) break;
		if(bef[p.first][p.second]==1) p.second--;
		else p.first=3-p.first, ans.push_back(p.second);
	}
	
	printf("Yes\n");
	printf("%d\n", ans.size());
	for(auto it : ans) printf("%d ", it); printf("\n");
	printf("0\n");
}

Compilation message

E.cpp: In function 'int main()':
E.cpp:53:11: warning: format '%d' expects argument of type 'int', but argument 2 has type 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wformat=]
   53 |  printf("%d\n", ans.size());
      |          ~^     ~~~~~~~~~~
      |           |             |
      |           int           std::vector<int>::size_type {aka long unsigned int}
      |          %ld
E.cpp:54:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   54 |  for(auto it : ans) printf("%d ", it); printf("\n");
      |  ^~~
E.cpp:54:40: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   54 |  for(auto it : ans) printf("%d ", it); printf("\n");
      |                                        ^~~~~~
E.cpp:19:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   19 |  scanf("%d%d%d%d", &N, &M1, &M2, &T);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E.cpp:20:32: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   20 |  for(int i=1; i<=M1; i++) scanf("%d", &A[i]), S[1][A[i]]=1;
      |                           ~~~~~^~~~~~~~~~~~~
E.cpp:21:32: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   21 |  for(int i=1; i<=M2; i++) scanf("%d", &B[i]), S[2][B[i]]=1;
      |                           ~~~~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 512 KB [OK, Yes] n = 20, m1 = 20, m2 = 0, t = 20
2 Incorrect 1 ms 512 KB Turns must be sorted!
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 512 KB [OK, Yes] n = 20, m1 = 20, m2 = 0, t = 20
2 Incorrect 1 ms 512 KB Turns must be sorted!
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 512 KB [No solution found] n = 20, m1 = 12, m2 = 9, t = 3
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 512 KB [OK, Yes] n = 20, m1 = 20, m2 = 0, t = 20
2 Incorrect 1 ms 512 KB Turns must be sorted!
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 512 KB [OK, Yes] n = 20, m1 = 20, m2 = 0, t = 20
2 Incorrect 1 ms 512 KB Turns must be sorted!
3 Halted 0 ms 0 KB -