Submission #1840448
Source Code Expand
#define _CRT_SECURE_NO_WARNINGS
//#pragma comment(linker, "/STACK:128777216")
#include <iostream>
#include <sstream>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <cstring>
#include <vector>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <map>
#include <set>
#include <algorithm>
#include <iterator>
#include <bitset>
#include <ctime>
#include<complex>
using namespace std;
#define FOR(i,a,b) for (int i = (a); i < (b); i++)
#define RFOR(i,b,a) for (int i = (b)-1; i >= (a); i--)
#define ITER(it,a) for (__typeof(a.begin()) it = a.begin(); it != a.end(); it++)
#define FILL(a,value) memset(a, value, sizeof(a))
#define SZ(a) (int)a.size()
#define ALL(a) a.begin(), a.end()
#define PB push_back
#define MP make_pair
typedef long long LL;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef pair<long long, long long> PLL;
const double PI = acos(-1.0);
const int INF = 1000 * 1000 * 1000 + 7;
const LL LINF = INF * (LL)INF;
const int MAX = 2000 + 47;
const int MOD = 1000 * 1000 * 1000 + 7;
//#define DEBUG
int A[MAX];
int B[MAX];
int C[MAX];
int IND[MAX];
vector<int> g[MAX];
int U[MAX];
vector<int> L[MAX];
vector<int> P;
int sz;
int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a % b);
}
int merge(int v, vector<int> A)
{
if (v != -1)
{
L[sz].push_back(v);
}
P.assign(SZ(A), 0);
while (1)
{
int ind = -1;
FOR(i, 0, SZ(A))
{
if (P[i] < SZ(L[A[i]]))
{
ind = i;
break;
}
}
if (ind == -1) break;
FOR(i, 0, SZ(A))
{
if (P[i] < SZ(L[A[i]]) && L[A[i]][P[i]] > L[A[ind]][P[ind]])
{
ind = i;
}
}
L[sz].push_back(L[A[ind]][P[ind]]);
P[ind]++;
}
sz++;
return sz - 1;
}
int dfs(int v)
{
U[v] = 1;
vector<int> A;
FOR(i, 0, SZ(g[v]))
{
int to = g[v][i];
if (U[to]) continue;
A.push_back(dfs(to));
}
return merge(v, A);
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
//ios::sync_with_stdio(false); cin.tie(0);
int n;
cin >> n;
FOR(i, 0, n)
{
cin >> A[i];
B[i] = A[i];
}
sort(B, B + n);
int sz = unique(B, B + n) - B;
FOR(i, 0, n)
{
int ind = lower_bound(B, B + sz, A[i]) - B;
IND[i] = ind;
C[ind]++;
}
FOR(i, 0, n)
{
FOR(j, 0, n)
{
if (i == j) continue;
if (gcd(A[i], A[j]) == 1) continue;
g[IND[i]].push_back(IND[j]);
}
}
FOR(i, 0, n)
{
sort(ALL(g[i]));
}
#ifdef DEBUG
cout << "B=" << endl;
FOR(i, 0, sz)
{
cout << B[i] << " ";
}
cout << endl;
cout << "g=" << endl;
FOR(i, 0, sz)
{
cout << i << ": ";
FOR(j, 0, SZ(g[i])) cout << g[i][j] << " ";
cout << endl;
}
#endif
vector<int> D;
FOR(i, 0, sz)
{
if (!U[i])
{
D.push_back(dfs(i));
}
}
int p = merge(-1,D);
FOR(i, 0, SZ(L[p]))
{
int ind = L[p][i];
FOR(j, 0, C[ind])
{
cout << B[ind] << " ";
}
}
cout << endl;
}
Submission Info
Submission Time |
|
Task |
E - Rearranging |
User |
vjudge1 |
Language |
C++14 (Clang 3.8.0) |
Score |
0 |
Code Size |
2866 Byte |
Status |
WA |
Exec Time |
579 ms |
Memory |
26496 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
0 / 1600 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample1.txt, sample2.txt |
All |
sample1.txt, sample2.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in3.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in4.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt |
Case Name |
Status |
Exec Time |
Memory |
in1.txt |
AC |
575 ms |
18688 KB |
in10.txt |
AC |
579 ms |
19328 KB |
in11.txt |
WA |
457 ms |
11904 KB |
in12.txt |
WA |
460 ms |
12032 KB |
in13.txt |
WA |
457 ms |
12032 KB |
in14.txt |
WA |
459 ms |
12032 KB |
in15.txt |
WA |
460 ms |
12160 KB |
in16.txt |
WA |
545 ms |
26240 KB |
in17.txt |
WA |
545 ms |
26496 KB |
in18.txt |
WA |
543 ms |
26240 KB |
in19.txt |
WA |
545 ms |
26240 KB |
in2.txt |
AC |
577 ms |
18816 KB |
in20.txt |
WA |
545 ms |
26240 KB |
in21.txt |
AC |
339 ms |
512 KB |
in22.txt |
AC |
340 ms |
512 KB |
in23.txt |
AC |
341 ms |
512 KB |
in24.txt |
AC |
339 ms |
512 KB |
in25.txt |
AC |
343 ms |
512 KB |
in26.txt |
WA |
458 ms |
11904 KB |
in27.txt |
WA |
459 ms |
12032 KB |
in28.txt |
WA |
455 ms |
11904 KB |
in29.txt |
WA |
460 ms |
12032 KB |
in3.txt |
AC |
574 ms |
18688 KB |
in30.txt |
WA |
459 ms |
12032 KB |
in31.txt |
AC |
1 ms |
384 KB |
in32.txt |
AC |
1 ms |
384 KB |
in33.txt |
AC |
1 ms |
384 KB |
in34.txt |
AC |
395 ms |
512 KB |
in35.txt |
AC |
394 ms |
512 KB |
in36.txt |
WA |
486 ms |
13568 KB |
in37.txt |
WA |
486 ms |
13568 KB |
in38.txt |
WA |
487 ms |
13568 KB |
in39.txt |
WA |
488 ms |
13440 KB |
in4.txt |
AC |
575 ms |
18304 KB |
in40.txt |
WA |
485 ms |
13440 KB |
in41.txt |
WA |
488 ms |
13568 KB |
in42.txt |
WA |
488 ms |
13440 KB |
in43.txt |
WA |
485 ms |
13440 KB |
in44.txt |
WA |
487 ms |
13440 KB |
in45.txt |
WA |
488 ms |
13568 KB |
in5.txt |
WA |
573 ms |
18688 KB |
in6.txt |
AC |
576 ms |
18944 KB |
in7.txt |
AC |
576 ms |
19200 KB |
in8.txt |
AC |
578 ms |
19072 KB |
in9.txt |
AC |
575 ms |
18560 KB |
sample1.txt |
AC |
1 ms |
384 KB |
sample2.txt |
AC |
1 ms |
384 KB |