답안 #875946

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
875946 2023-11-20T20:25:47 Z auslander 은행 (IZhO14_bank) C++17
44 / 100
23 ms 460 KB
#include <iostream>
#include <algorithm>
#include <math.h>
#include <sstream>
#include <string>
#include <iomanip>
#include <queue>
#include <stack>
#include <deque>
#include <set>
#include <map>
#include <vector>
#include <iterator>
using namespace std;

//defines
#define ll long long
#define usg unsigned
#define kap map
#define print(x, n) for(int for_loop = 0; for_loop < n; for_loop++){cout<<x[for_loop]<<' ';}cout<<endl; 
#define read(x, n) for(int for_loop = 0; for_loop < n; for_loop++){cin>>x[for_loop];} 
#define speed ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define ratdig(x) cout << fixed << setprecision(x);
#define xfixdig(x) cout << setprecision(x);
#define multi int t; cin>>t; presolve(); while(t--) solve()
#define single presolve(); solve(); return 0
#define rev(x) reverse(x.begin(), x.end())
#define all(x) x.begin(), x.end()

//functions
void yn(bool b)
{
	if (b)
	{
		cout << "YES\n";
		return;
	}
	cout << "NO\n";
}

ll gcd(ll a, ll b) {
	if (a == 0)
		return b;
	if (b == 0)
		return a;
	return gcd(b % a, a);
}

ll lcm(ll a, ll b)
{
	return (a * b) / gcd(a, b);
}

string to2(ll a)
{
	string r = "";
	for (ll i = a; i > 0; )
	{
		ll k = i % 2;
		i /= 2;
		char c = k + 48;
		r += c;
	}
	if (a == 0)
	{
		r = "0";
	}
	rev(r);

	return r;
}

ll binpow(ll a, ll b, ll mod = -1)
{
	ll ans = 1;
	while (b)
	{
		if ((b & 1) == 1)
		{
			ans *= a;
			if (mod != -1)
				ans %= mod;
		}
		b >>= 1;
		a *= a;
		if (mod != -1)
			a %= mod;
	}
	return ans;
}

//body

void presolve()
{

}

ll a[35], b[35];
bool d[1005];
void usapark(int m)
{
	ll i, j, k, n = 1;
	cin >> k;
	for (i = 0; i < m; i++)
	{
		cin >> b[i];
	}
	sort(b, b + m);
	for (i = m - 1; i >= 0; i--)
	{
		for (j = k; j >= 0; j--)
		{
			if (!d[j])
				continue;
			if (j + b[i] <= 1000)
				d[j + b[i]] = true;
			if (j + b[i] == k)
			{
				yn(1);
				return;
			}
		}
		d[b[i]] = true;
		if (b[i] == k)
		{
			yn(1);
			return;
		}
	}
	yn(0);
}

void auslander(int n, int m)
{
	ll i, j, k;
	for (i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	for (i = 0; i < m; i++)
	{
		cin >> b[i];
	}
	sort(a, a + n);
	sort(b, b + m);
	do
	{
		j = 0;
		k = 0;
		bool bl = true;
		for (i = 0; i < m; i++)
		{
			k += b[i];
			if (j == n)
				break;
			if (a[j] == k)
			{
				j++;
				k = 0;
			}
			else if (a[j] < k)
			{
				bl = false;
				break;
			}
		}
		if (!bl)
			continue;
		yn(1);
		return;
	} while (next_permutation(b, b + m));
	yn(0);
	return;
}
void solve()
{
	int n, m;
	cin >> n >> m;
	if (n == 1)
	{
		usapark(m);
	}
	else if (m <= 10)
	{
		auslander(n, m);
	}
	else
	{
		int i;
		for (i = 0; i < n; i++)
		{
			cin >> a[i];
		}
		for (i = 0; i < m; i++)
		{
			cin >> b[i];
		}
		yn(1);
	}
}

int main()
{
	speed;
	single;
	multi;

	return 0;
}

Compilation message

bank.cpp: In function 'void usapark(int)':
bank.cpp:103:14: warning: unused variable 'n' [-Wunused-variable]
  103 |  ll i, j, k, n = 1;
      |              ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 456 KB Output is correct
3 Correct 1 ms 388 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 3 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 2 ms 348 KB Output is correct
5 Correct 15 ms 460 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 456 KB Output is correct
9 Correct 23 ms 348 KB Output is correct
10 Correct 4 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Incorrect 0 ms 348 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 456 KB Output is correct
3 Correct 1 ms 388 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 3 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 2 ms 348 KB Output is correct
14 Correct 15 ms 460 KB Output is correct
15 Correct 0 ms 344 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 1 ms 456 KB Output is correct
18 Correct 23 ms 348 KB Output is correct
19 Correct 4 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Incorrect 0 ms 348 KB Output isn't correct
24 Halted 0 ms 0 KB -