Submission #1202324


Source Code Expand

#include <iostream>
#include <vector>
#include <algorithm>
typedef long long ll;
using namespace std;
const int maxN = 111;
ll cnt[maxN];
bool used[maxN];
vector <int> v;

ll calc(int l, int r) {
    for (int i = 1; i <= 100; i++) {
        cnt[i] = 0;
        used[i] = 0;
    }
    ll sum = 0;
    for (int i = l; i <= r; i++) {
        ll cur = 0;
        for (int j = 1; j < v[i]; j++) {
            cur += cnt[j];
        }
        cur++;
        cnt[v[i]] += cur;
        sum += cur;
        if (sum > 1e14) {
            return 1e14;
        }
    }
    return sum;
}
int main(void) {
    ll n;
    cin >> n;
    v.push_back(1);
    vector <int> r;
    for (int j = 2; j <= 100; j++) {
           r.push_back(j);
    }
    if (n != 1) {
        for (int j = 0; j <= r.size(); j++) {
            int i = r[j];
            v.push_back(i);
            ll mx = 0;
            int pp = 0;
            vector <int> v1 = v;
            for (int p = 0; p < v.size(); p++) {
                for (int j = (int)v.size() - 2; j >= p; j--) {
                    v[j + 1] = v[j];
                }
                v[p] = i;
                ll cur = calc(0, (int)v.size() - 1);
                if (cur <= n && cur > mx) {
                    mx = max(cur, mx);
                    pp = p;
                }
                v = v1;
            }
            for (int j = (int)v.size() - 2; j >= pp; j--) {
                v[j + 1] = v[j];
            }
            v[pp] = i;
            if (mx == 99) {
                int o = 0;
            }
            fflush(stderr);
            if (mx == n) {
                break;
            }
        }
    }
    if (calc(0, v.size() - 1) != n) {
        return -1;
    }
    cout << (int)v.size() + 100 << endl;
    for (int i = 1; i <= 100LL; i++) {
        cout << i << " ";
    }
    for (auto el : v) {
        cout << el << " ";
    }
    cout << endl;
}

Submission Info

Submission Time
Task C - Tautonym Puzzle
User glebushka98
Language C++14 (GCC 5.4.1)
Score 1000
Code Size 1976 Byte
Status AC
Exec Time 4 ms
Memory 256 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1000 / 1000
Status
AC × 2
AC × 32
Set Name Test Cases
Sample 00_example_01.txt, 00_example_02.txt
All 00_example_01.txt, 00_example_02.txt, 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt
Case Name Status Exec Time Memory
00_example_01.txt AC 1 ms 256 KB
00_example_02.txt AC 1 ms 256 KB
01.txt AC 2 ms 256 KB
02.txt AC 1 ms 256 KB
03.txt AC 1 ms 256 KB
04.txt AC 2 ms 256 KB
05.txt AC 1 ms 256 KB
06.txt AC 1 ms 256 KB
07.txt AC 2 ms 256 KB
08.txt AC 2 ms 256 KB
09.txt AC 1 ms 256 KB
10.txt AC 1 ms 256 KB
11.txt AC 1 ms 256 KB
12.txt AC 1 ms 256 KB
13.txt AC 2 ms 256 KB
14.txt AC 1 ms 256 KB
15.txt AC 1 ms 256 KB
16.txt AC 1 ms 256 KB
17.txt AC 1 ms 256 KB
18.txt AC 1 ms 256 KB
19.txt AC 2 ms 256 KB
20.txt AC 1 ms 256 KB
21.txt AC 2 ms 256 KB
22.txt AC 1 ms 256 KB
23.txt AC 2 ms 256 KB
24.txt AC 1 ms 256 KB
25.txt AC 1 ms 256 KB
26.txt AC 2 ms 256 KB
27.txt AC 4 ms 256 KB
28.txt AC 1 ms 256 KB
29.txt AC 3 ms 256 KB
30.txt AC 2 ms 256 KB