Contest Duration: ~ (local time) (180 minutes)

Submission #991789

Source Code Expand

Copy
```// tsukasa_diary's programing contest code template
#include <bits/stdc++.h>
using namespace std;
#define TSUKASA_DIARY_S_TEMPLATE
// define
#define for_(i,a,b) for(int i=(a);i<(b);++i)
#define for_rev(i,a,b) for(int i=(a);i>=(b);--i)
#define allof(a) (a).begin(),(a).end()
#define minit(a,b) memset(a,b,sizeof(a))
#define size_of(a) int((a).size())
#define cauto const auto
// typedef
typedef long long lint;
typedef double Double;
typedef pair< int, int > pii;
template< typename T > using Vec = vector< T >;
template< typename T > using Matrix = Vec< Vec< T > >;
template< typename T > using USet = unordered_set< T >;
template< typename T, class C > using MyUSet = unordered_set< T, C >;
template< typename T, typename F > using UMap = unordered_map< T, F >;
template< typename T, typename F, class C > using MyUMap = unordered_map< T, F, C >;
// hash
class PiiHash { public: size_t operator () (const pii& p) const { return (p.first << 16) | p.second; } };
// popcount
inline int POPCNT(int x) { return __builtin_popcount(x); }
inline int POPCNT(lint x) { return __builtin_popcount(x); }
// inf
const int iINF = 1L << 30;
const lint lINF = 1LL << 60;
// eps
const Double EPS = 1e-9;
const Double PI = acos(-1);
// inrange
template< typename T >
inline bool in_range(T v, T mi, T mx) { return mi <= v && v < mx; }
template< typename T >
inline bool in_range(T x, T y, T W, T H) { return in_range(x,0,W) && in_range(y,0,H); }
// neighbor clockwise
const int DX[4] = {0,1,0,-1}, DY[4] = {-1,0,1,0};
const int DX_[8] = {0,1,1,1,0,-1,-1,-1}, DY_[8] = {-1,-1,0,1,1,1,0,-1};
// variable update
template< typename T > inline void modAdd(T& a, T b, T mod) { a = (a + b) % mod; }
template< typename T > inline void modMul(T& a, T b, T mod) { a = (a * b) % mod; }
template< typename T > inline void minUpdate(T& a, T b) { a = min(a, b); }
template< typename T > inline void maxUpdate(T& a, T b) { a = max(a, b); }
// converter
template< typename F, typename T >
inline void convert(F& from, T& to) {
stringstream ss;
ss << from; ss >> to;
}

int N;

bool able(int x) {
int n = N;
while (n) {
if (n >= x) n -= x;
--x;
if (x == 0) break;
}
return n == 0;
}

void output(int x) {
int n = N;
Vec< int > ans;
while (n) {
if (n >= x) {
n -= x;
ans.push_back(x);
}
--x;
}
sort(allof(ans));
for (int x : ans) cout << x << endl;
}

void solve() {
int lb = 0, ub = N + 1;
while (ub - lb > 1) {
int med = (ub + lb) / 2;
if (able(med)) ub = med;
else lb = med;
}
output(ub);
}

int main() {
cin >> N;
solve();
}

```

#### Submission Info

Submission Time 2016-11-26 12:39:13+0900 B - Exactly N points tsukasa_diary C++14 (GCC 5.4.1) 300 2638 Byte AC 27 ms 256 KB

#### Judge Result

Set Name Score / Max Score Test Cases
sample 0 / 0 sample-01.txt, sample-02.txt, sample-03.txt
dataset1 200 / 200 sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt
dataset2 100 / 100 sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt
Case Name Status Exec Time Memory
01-01.txt 2 ms 256 KB
01-02.txt 2 ms 256 KB
01-03.txt 2 ms 256 KB
01-04.txt 2 ms 256 KB
01-05.txt 2 ms 256 KB
01-06.txt 2 ms 256 KB
01-07.txt 2 ms 256 KB
01-08.txt 2 ms 256 KB
01-09.txt 2 ms 256 KB
01-10.txt 2 ms 256 KB
02-01.txt 22 ms 256 KB
02-02.txt 27 ms 256 KB
02-03.txt 22 ms 256 KB
02-04.txt 22 ms 256 KB
02-05.txt 27 ms 256 KB
02-06.txt 11 ms 256 KB
02-07.txt 9 ms 256 KB
02-08.txt 21 ms 256 KB
sample-01.txt 2 ms 256 KB
sample-02.txt 2 ms 256 KB
sample-03.txt 2 ms 256 KB