이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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;
}
컴파일 시 표준 에러 (stderr) 메시지
bank.cpp: In function 'void usapark(int)':
bank.cpp:103:14: warning: unused variable 'n' [-Wunused-variable]
103 | ll i, j, k, n = 1;
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |