結果
| 問題 |
No.2609 Decreasing GCDs
|
| コンテスト | |
| ユーザー |
tko919
|
| 提出日時 | 2024-01-20 03:42:08 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 1,000 ms |
| コード長 | 8,468 bytes |
| コンパイル時間 | 1,880 ms |
| コンパイル使用メモリ | 200,180 KB |
| 最終ジャッジ日時 | 2025-02-18 21:46:44 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 22 |
ソースコード
#line 1 "library/Template/template.hpp"
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define ALL(v) (v).begin(),(v).end()
#define UNIQUE(v) sort(ALL(v)),(v).erase(unique(ALL(v)),(v).end())
#define SZ(v) (int)v.size()
#define MIN(v) *min_element(ALL(v))
#define MAX(v) *max_element(ALL(v))
#define LB(v,x) int(lower_bound(ALL(v),(x))-(v).begin())
#define UB(v,x) int(upper_bound(ALL(v),(x))-(v).begin())
using ll=long long int;
using ull=unsigned long long;
using i128=__int128_t;
using u128=__uint128_t;
const int inf = 0x3fffffff;
const ll INF = 0x1fffffffffffffff;
template<typename T>inline bool chmax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
template<typename T>inline bool chmin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<typename T,typename U>T ceil(T x,U y){assert(y!=0); if(y<0)x=-x,y=-y; return (x>0?(x+y-1)/y:x/y);}
template<typename T,typename U>T floor(T x,U y){assert(y!=0); if(y<0)x=-x,y=-y; return (x>0?x/y:(x-y+1)/y);}
template<typename T>int popcnt(T x){return __builtin_popcountll(x);}
template<typename T>int topbit(T x){return (x==0?-1:63-__builtin_clzll(x));}
template<typename T>int lowbit(T x){return (x==0?-1:__builtin_ctzll(x));}
#line 2 "library/Utility/fastio.hpp"
#include <unistd.h>
class FastIO {
static constexpr int L = 1 << 16;
char rdbuf[L];
int rdLeft = 0, rdRight = 0;
inline void reload() {
int len = rdRight - rdLeft;
memmove(rdbuf, rdbuf + rdLeft, len);
rdLeft = 0, rdRight = len;
rdRight += fread(rdbuf + len, 1, L - len, stdin);
}
inline bool skip() {
for (;;) {
while (rdLeft != rdRight and rdbuf[rdLeft] <= ' ')
rdLeft++;
if (rdLeft == rdRight) {
reload();
if (rdLeft == rdRight)
return false;
} else
break;
}
return true;
}
template <typename T, enable_if_t<is_integral<T>::value, int> = 0>
inline bool _read(T &x) {
if (!skip())
return false;
if (rdLeft + 20 >= rdRight)
reload();
bool neg = false;
if (rdbuf[rdLeft] == '-') {
neg = true;
rdLeft++;
}
x = 0;
while (rdbuf[rdLeft] >= '0' and rdLeft < rdRight) {
x = x * 10 +
(neg ? -(rdbuf[rdLeft++] ^ 48) : (rdbuf[rdLeft++] ^ 48));
}
return true;
}
inline bool _read(__int128_t &x) {
if (!skip())
return false;
if (rdLeft + 40 >= rdRight)
reload();
bool neg = false;
if (rdbuf[rdLeft] == '-') {
neg = true;
rdLeft++;
}
x = 0;
while (rdbuf[rdLeft] >= '0' and rdLeft < rdRight) {
x = x * 10 +
(neg ? -(rdbuf[rdLeft++] ^ 48) : (rdbuf[rdLeft++] ^ 48));
}
return true;
}
inline bool _read(__uint128_t &x) {
if (!skip())
return false;
if (rdLeft + 40 >= rdRight)
reload();
x = 0;
while (rdbuf[rdLeft] >= '0' and rdLeft < rdRight) {
x = x * 10 + (rdbuf[rdLeft++] ^ 48);
}
return true;
}
template <typename T, enable_if_t<is_floating_point<T>::value, int> = 0>
inline bool _read(T &x) {
if (!skip())
return false;
if (rdLeft + 20 >= rdRight)
reload();
bool neg = false;
if (rdbuf[rdLeft] == '-') {
neg = true;
rdLeft++;
}
x = 0;
while (rdbuf[rdLeft] >= '0' and rdbuf[rdLeft] <= '9' and
rdLeft < rdRight) {
x = x * 10 + (rdbuf[rdLeft++] ^ 48);
}
if (rdbuf[rdLeft] != '.')
return true;
rdLeft++;
T base = .1;
while (rdbuf[rdLeft] >= '0' and rdbuf[rdLeft] <= '9' and
rdLeft < rdRight) {
x += base * (rdbuf[rdLeft++] ^ 48);
base *= .1;
}
if (neg)
x = -x;
return true;
}
inline bool _read(char &x) {
if (!skip())
return false;
if (rdLeft + 1 >= rdRight)
reload();
x = rdbuf[rdLeft++];
return true;
}
inline bool _read(string &x) {
if (!skip())
return false;
for (;;) {
int pos = rdLeft;
while (pos < rdRight and rdbuf[pos] > ' ')
pos++;
x.append(rdbuf + rdLeft, pos - rdLeft);
if (rdLeft == pos)
break;
rdLeft = pos;
if (rdLeft == rdRight)
reload();
else
break;
}
return true;
}
template <typename T> inline bool _read(vector<T> &v) {
for (auto &x : v) {
if (!_read(x))
return false;
}
return true;
}
char wtbuf[L], tmp[50];
int wtRight = 0;
inline void _write(const char &x) {
if (wtRight > L - 32)
flush();
wtbuf[wtRight++] = x;
}
inline void _write(const string &x) {
for (auto &c : x)
_write(c);
}
template <typename T, enable_if_t<is_integral<T>::value, int> = 0>
inline void _write(T x) {
if (wtRight > L - 32)
flush();
if (x == 0) {
_write('0');
return;
} else if (x < 0) {
_write('-');
if (__builtin_expect(x == std::numeric_limits<T>::min(), 0)) {
switch (sizeof(x)) {
case 2:
_write("32768");
return;
case 4:
_write("2147483648");
return;
case 8:
_write("9223372036854775808");
return;
}
}
x = -x;
}
int pos = 0;
while (x != 0) {
tmp[pos++] = char((x % 10) | 48);
x /= 10;
}
rep(i, 0, pos) wtbuf[wtRight + i] = tmp[pos - 1 - i];
wtRight += pos;
}
inline void _write(__int128_t x) {
if (wtRight > L - 40)
flush();
if (x == 0) {
_write('0');
return;
} else if (x < 0) {
_write('-');
x = -x;
}
int pos = 0;
while (x != 0) {
tmp[pos++] = char((x % 10) | 48);
x /= 10;
}
rep(i, 0, pos) wtbuf[wtRight + i] = tmp[pos - 1 - i];
wtRight += pos;
}
inline void _write(__uint128_t x) {
if (wtRight > L - 40)
flush();
if (x == 0) {
_write('0');
return;
}
int pos = 0;
while (x != 0) {
tmp[pos++] = char((x % 10) | 48);
x /= 10;
}
rep(i, 0, pos) wtbuf[wtRight + i] = tmp[pos - 1 - i];
wtRight += pos;
}
inline void _write(double x) {
ostringstream oss;
oss << fixed << setprecision(15) << double(x);
string s = oss.str();
_write(s);
}
template <typename T> inline void _write(const vector<T> &v) {
rep(i, 0, v.size()) {
if (i)
_write(' ');
_write(v[i]);
}
}
public:
FastIO() {}
~FastIO() { flush(); }
inline void read() {}
template <typename Head, typename... Tail>
inline void read(Head &head, Tail &...tail) {
assert(_read(head));
read(tail...);
}
template <bool ln = true, bool space = false> inline void write() {
if (ln)
_write('\n');
}
template <bool ln = true, bool space = false, typename Head,
typename... Tail>
inline void write(const Head &head, const Tail &...tail) {
if (space)
_write(' ');
_write(head);
write<ln, true>(tail...);
}
inline void flush() {
fwrite(wtbuf, 1, wtRight, stdout);
wtRight = 0;
}
};
/**
* @brief Fast IO
*/
#line 3 "sol.cpp"
FastIO io;
int main() {
int n;
io.read(n);
vector<int> A;
rep(_, 0, 25) {
int add = 1;
rep($, 0, _) add *= 2;
A.push_back(add);
}
sort(ALL(A));
int base = 0;
rep(i, 0, n) {
int x = A[n - i - 1];
base += x;
io.write(base);
}
return 0;
}
tko919