제출 #243404

#제출 시각아이디문제언어결과실행 시간메모리
243404LawlietBrunhilda’s Birthday (BOI13_brunhilda)C++17
100 / 100
378 ms80836 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAXM = 100010;
const int MAXN = 10000010;
const int INF = 1000000010;

int m, q;

int v[MAXM];
int dp[MAXN], mx[MAXN];

int getNext(int value, int p) { return value - value%p; }

int main()
{
	scanf("%d %d",&m,&q);

	for(int i = 1 ; i <= m ; i++)
		scanf("%d",&v[i]);

	for(int i = 1 ; i <= m ; i++)
		for(int cur = v[i] ; cur < MAXN ; cur += v[i])
			mx[cur] = max( mx[cur] , v[i] );

	int mn = INF;

	for(int i = 1 ; i <= m ; i++)
		mn = min( mn , getNext( 10000000 , v[i] ) );

	for(int i = MAXN - 1 ; i > 0 ; i--)
	{
		dp[i] = mn;
		if( mx[i] != 0 ) mn = min( mn , getNext( i - 1 , mx[i] ) );
	}

	for(int i = 1 ; i < MAXN ; i++)
	{
		if( dp[i] == i ) dp[i] = INF;
		else dp[i] = dp[ dp[i] ] + 1;
	}

	for(int i = 1 ; i <= q ; i++)
	{
		int p;
		scanf("%d",&p);

		if( dp[p] >= INF ) printf("oo\n");
		else printf("%d\n",dp[p]);
	}
}

컴파일 시 표준 에러 (stderr) 메시지

brunhilda.cpp: In function 'int main()':
brunhilda.cpp:18:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&m,&q);
  ~~~~~^~~~~~~~~~~~~~~
brunhilda.cpp:21:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&v[i]);
   ~~~~~^~~~~~~~~~~~
brunhilda.cpp:47:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&p);
   ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...