Submission #158205

#TimeUsernameProblemLanguageResultExecution timeMemory
158205LawlietBrunhilda’s Birthday (BOI13_brunhilda)C++14
0 / 100
359 ms262148 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];
int opt[MAXN];

bool isMultiple[MAXN];

vector< int > d[MAXN];
vector< int > multiples[MAXM];

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 = 0 ; cur < 10000000 ; cur += v[i])
		{
			d[ cur ].push_back( i );
			multiples[ i ].push_back( cur );
		}
	}

	int mn = INF;

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

	for(int i = 10000000 ; i > 0 ; i--)
	{
		opt[ i ] = mn;

		for(int j = 0 ; j < d[ i ].size() ; j++)
		{
			int curPrime = d[ i ][ j ];

			multiples[ curPrime ].pop_back();
			mn = min(mn , multiples[ curPrime ].back());
		}
	}

	for(int i = 1 ; i <= 10000000 ; i++)
	{
		dp[ i ] = INF;
		dp[ i ] = dp[ opt[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 ]);
	}
}

Compilation message (stderr)

brunhilda.cpp: In function 'int main()':
brunhilda.cpp:45:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j = 0 ; j < d[ i ].size() ; j++)
                   ~~^~~~~~~~~~~~~~~
brunhilda.cpp:22: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:25:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&v[i]);
   ~~~~~^~~~~~~~~~~~
brunhilda.cpp:63: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...