# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
968941 | auslander | 아름다운 순열 (IZhO12_beauty) | C++17 | 1 ms | 348 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string>
#include <iomanip>
#include <queue>
#include <stack>
#include <deque>
#include <set>
#include <map>
#include <vector>
#include <iterator>
using namespace std;
typedef long long ll;
typedef unsigned usg;
#define speed ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define multi int t; cin>>t; while(t--) solve()
#define single solve(); return 0
#define ratdig(x) cout << fixed << setprecision(x);
#define xfixdig(x) cout << setprecision(x);
#define rev(x) reverse(x.begin(), x.end())
#define all(x) x.begin(), x.end()
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, ll n = -1)
{
string r = "";
for (ll i = 0; (1 << i) <= a; i++)
{
char c = (((1 << i) & a) != 0) + '0';
r += c;
}
if (a == 0)
{
r = "0";
}
if (n != -1)
{
for (int i = 0; i < n - r.size(); i++)
r += '0';
}
rev(r);
return r;
}
ll b2(ll a)
{
ll r = 0;
for (ll i = 0; (1 << i) <= a; i++)
{
ll c = (((1 << i) & a) != 0);
r += c;
}
return r;
}
ll b3(ll a, ll n = -1)
{
ll r = 0;
ll y = 1;
for (ll i = 0; y <= a; i++)
{
ll c = ((y & a) != 0);
r += c;
y *= 3;
}
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;
}
ll arr[25], a2[25], a3[25];
ll a[25];
void solve()
{
int m, n, i, j, k;
cin >> n;
for (i = 0; i < n; i++)
{
cin >> arr[i];
a[i] = i;
a2[i] = b2(arr[i]);
a3[i] = b3(arr[i]);
}
ll res = 0;
do {
for (i = 1; i < n; i++)
{
if (a2[a[i]] != a2[a[i - 1]] && a3[a[i]] != a3[a[i - 1]])
{
res--;
break;
}
}
res++;
} while (next_permutation(a, a + n));
cout << res;
}
int main()
{
speed;
single;
multi;
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |