Submission #979563
Source Code Expand
#ifndef __clang__
#pragma GCC optimize ("-O3")
#endif
#ifdef ONLINE_JUDGE
#define NDEBUG 1
#endif
#define _GLIBCXX_USE_CXX11_ABI 0
#include <stdio.h>
#include <bits/stdc++.h>
#define DESTRUCT2(p, a, b) \
auto a = get<0>(p); \
auto b = get<1>(p);
#define DESTRUCT3(p, a, b, c) \
auto a = get<0>(p); \
auto b = get<1>(p); \
auto c = get<2>(p);
#define DESTRUCT4(p, a, b, c, d) \
auto a = get<0>(p); \
auto b = get<1>(p); \
auto c = get<2>(p); \
auto d = get<3>(p);
#define FOR(i, n) for(lli i = 0; i < (lli)(n); ++i)
#define FORU(i, j, k) for(lli i = (j); i <= (lli)(k); ++i)
#define FORD(i, j, k) for(lli i = (j); i >= (lli)(k); --i)
#define SQ(x) ((x)*(x))
#define all(x) begin(x), end(x)
#define rall(x) rbegin(x), rend(x)
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define eb emplace_back
using namespace std;
template<typename... As>
struct tpl : public std::tuple<As...> {
using std::tuple<As...>::tuple;
template<typename T = tuple<As...> >
typename tuple_element<0, T>::type const&
x() const { return get<0>(*this); }
template<typename T = tuple<As...> >
typename tuple_element<0, T>::type&
x() { return get<0>(*this); }
template<typename T = tuple<As...> >
typename tuple_element<1, T>::type const&
y() const { return get<1>(*this); }
template<typename T = tuple<As...> >
typename tuple_element<1, T>::type&
y() { return get<1>(*this); }
template<typename T = tuple<As...> >
typename tuple_element<2, T>::type const&
z() const { return get<2>(*this); }
template<typename T = tuple<As...> >
typename tuple_element<2, T>::type&
z() { return get<2>(*this); }
template<typename T = tuple<As...> >
typename tuple_element<3, T>::type const&
w() const { return get<3>(*this); }
template<typename T = tuple<As...> >
typename tuple_element<3, T>::type&
w() { return get<3>(*this); }
};
using lli = long long int;
using llu = long long unsigned;
using pii = tpl<lli, lli>;
using piii = tpl<lli, lli, lli>;
using piiii = tpl<lli, lli, lli, lli>;
using vi = vector<lli>;
using vii = vector<pii>;
using viii = vector<piii>;
using vvi = vector<vi>;
using vvii = vector<vii>;
using vviii = vector<viii>;
template<class T>
using min_queue = priority_queue<T, vector<T>, greater<T> >;
template<class T>
using max_queue = priority_queue<T>;
template<size_t... I>
struct my_index_sequence {
using type = my_index_sequence;
static constexpr array<size_t, sizeof...(I)> value = { {I...} };
};
namespace my_index_sequence_detail {
template<typename I, typename J> struct concat;
template<size_t... I, size_t... J>
struct concat<my_index_sequence<I...>, my_index_sequence<J...> > :
my_index_sequence<I..., (sizeof...(I)+J)...> { };
template<size_t N> struct make_index_sequence :
concat<typename make_index_sequence<N/2>::type, typename make_index_sequence<N-N/2>::type>::type { };
template <> struct make_index_sequence<0> : my_index_sequence<>{};
template <> struct make_index_sequence<1> : my_index_sequence<0>{};
}
template<class... A>
using my_index_sequence_for = typename my_index_sequence_detail::make_index_sequence<sizeof...(A)>::type;
template<class T, size_t... I>
void print_tuple(ostream& s, T const& a, my_index_sequence<I...>){
using swallow = int[];
(void)swallow{0, (void(s << (I == 0? "" : ", ") << get<I>(a)), 0)...};
}
template<class T>
ostream& print_collection(ostream& s, T const& a){
s << '[';
for(auto it = begin(a); it != end(a); ++it){
s << *it;
if(it != prev(end(a))) s << " ";
}
return s << ']';
}
template<class... A>
ostream& operator<<(ostream& s, tpl<A...> const& a){
s << '(';
print_tuple(s, a, my_index_sequence_for<A...>{});
return s << ')';
}
template<class... A>
ostream& operator<<(ostream& s, tuple<A...> const& a){
s << '(';
print_tuple(s, a, my_index_sequence_for<A...>{});
return s << ')';
}
template<class A, class B>
ostream& operator<<(ostream& s, pair<A, B> const& a){
return s << "(" << get<0>(a) << ", " << get<1>(a) << ")";
}
template<class T, size_t I>
ostream& operator<<(ostream& s, array<T, I> const& a) { return print_collection(s, a); }
template<class T>
ostream& operator<<(ostream& s, vector<T> const& a) { return print_collection(s, a); }
template<class T, class U>
ostream& operator<<(ostream& s, multimap<T, U> const& a) { return print_collection(s, a); }
template<class T>
ostream& operator<<(ostream& s, multiset<T> const& a) { return print_collection(s, a); }
template<class T, class U>
ostream& operator<<(ostream& s, map<T, U> const& a) { return print_collection(s, a); }
template<class T>
ostream& operator<<(ostream& s, set<T> const& a) { return print_collection(s, a); }
namespace std {
namespace {
template <class T>
inline void hash_combine(size_t& seed, T const& v) {
seed ^= hash<T>()(v) + 0x9e3779b9 + (seed<<6) + (seed>>2);
}
template <class Tuple, size_t Index = tuple_size<Tuple>::value - 1>
struct HashValueImpl {
static void apply(size_t& seed, Tuple const& tuple) {
HashValueImpl<Tuple, Index-1>::apply(seed, tuple);
hash_combine(seed, get<Index>(tuple));
}
};
template <class Tuple>
struct HashValueImpl<Tuple, 0> {
static void apply(size_t& seed, Tuple const& tuple) {
hash_combine(seed, get<0>(tuple));
}
};
}
template <typename ... TT>
struct hash<tuple<TT...>> {
size_t operator()(tuple<TT...> const& tt) const {
size_t seed = 0;
HashValueImpl<tuple<TT...> >::apply(seed, tt);
return seed;
}
};
template <typename ... TT>
struct hash<tpl<TT...>> {
size_t operator()(tpl<TT...> const& tt) const {
size_t seed = 0;
HashValueImpl<tuple<TT...> >::apply(seed, tt);
return seed;
}
};
}
int read_positive(){
char c; int x=0;
do { c = getchar(); } while(c<'0' || c>'9');
while(c>='0'&&c<='9') {
x=10*x+(c-'0');
c = getchar();
}
return x;
}
//------------------------------------------------------------------------------
int P[20000];
int A[20000];
int B[20000];
int main(int, char**){
ios::sync_with_stdio(0); cin.tie(0);
int n; cin >> n;
FOR(i,n) {
cin>>P[i]; P[i]-=1;
}
FOR(i,n) A[i] = 40000*(i+1);
FOR(i,n) B[i] = 40000*(n-i);
FOR(i,n) A[P[i]]+=i;
#ifdef LOCAL
FOR(i,n) {
cerr << A[P[i]]+B[P[i]] << " ";
}
cerr << endl;
#endif
FOR(i,n) cout << A[i] << " "; cout << endl;
FOR(i,n) cout << B[i] << " "; cout << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
B - Construct Sequences |
User |
Rafbill |
Language |
C++14 (GCC 5.4.1) |
Score |
400 |
Code Size |
6939 Byte |
Status |
AC |
Exec Time |
8 ms |
Memory |
896 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
400 / 400 |
Status |
|
|
Set Name |
Test Cases |
Sample |
example0.txt, example1.txt, example2.txt |
All |
000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, example0.txt, example1.txt, example2.txt |
Case Name |
Status |
Exec Time |
Memory |
000.txt |
AC |
3 ms |
384 KB |
001.txt |
AC |
3 ms |
256 KB |
002.txt |
AC |
3 ms |
256 KB |
003.txt |
AC |
2 ms |
256 KB |
004.txt |
AC |
3 ms |
256 KB |
005.txt |
AC |
7 ms |
896 KB |
006.txt |
AC |
3 ms |
384 KB |
007.txt |
AC |
7 ms |
768 KB |
008.txt |
AC |
5 ms |
640 KB |
009.txt |
AC |
7 ms |
896 KB |
010.txt |
AC |
8 ms |
896 KB |
011.txt |
AC |
8 ms |
896 KB |
012.txt |
AC |
8 ms |
896 KB |
013.txt |
AC |
8 ms |
896 KB |
014.txt |
AC |
8 ms |
896 KB |
015.txt |
AC |
7 ms |
896 KB |
016.txt |
AC |
8 ms |
896 KB |
017.txt |
AC |
8 ms |
896 KB |
018.txt |
AC |
8 ms |
896 KB |
example0.txt |
AC |
2 ms |
256 KB |
example1.txt |
AC |
2 ms |
256 KB |
example2.txt |
AC |
2 ms |
256 KB |