Submission #737139

#TimeUsernameProblemLanguageResultExecution timeMemory
737139puppyPresent (RMI21_present)C++17
29 / 100
4058 ms292 KiB
#include <iostream>
#include <numeric>
using namespace std;
int g[41][41];
long long get_closed(long long ind)
{
    long long ans = ind;
    for (int i = 40; i >= 1; i--) {
        if (ans & 1LL << i-1) {
            for (int j = i-1; j >= 1; j--) {
                if (ans & 1LL << j-1) {
                    ans |= 1LL << g[i][j]-1;
                }
            }
        }
    }
    return ans;
}
long long get_next(long long cur)
{
    long long bef = get_closed(cur);
    for (int i = 1;; i++) {
        if (!(bef & (1LL << i-1))) {
            for (int j = 1; j < i; j++) {
                if (cur & (1LL << j-1)) cur -= 1LL << j-1;
            }
            cur += 1LL << i-1;
            return cur;
        }
    }
}
int popcount(long long id)
{
    int cnt = 0;
    for (int i = 0; i < 40; i++) {
        if (id & (1LL << i)) cnt++;
    }
    return cnt;
}
void print_set(long long id)
{
    cout << popcount(id) << ' ';
    for (int i = 1; i <= 40; i++) {
        if (id & (1LL << i-1)) cout << i << ' ';
    }
    cout << '\n';
}
int main()
{
    for (int i = 1; i <= 40; i++) {
        for (int j = 1; j <= 40; j++) {
            g[i][j] = gcd(i, j);
        }
    }
    int T; cin >> T;
    while (T--) {
        int K; cin >> K;
        long long cur = 0;
        for (int i = 1; i <= K; i++) cur = get_next(cur);
        print_set(get_closed(cur));
    }
}

Compilation message (stderr)

Main.cpp: In function 'long long int get_closed(long long int)':
Main.cpp:9:27: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
    9 |         if (ans & 1LL << i-1) {
      |                          ~^~
Main.cpp:11:35: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
   11 |                 if (ans & 1LL << j-1) {
      |                                  ~^~
Main.cpp:12:42: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
   12 |                     ans |= 1LL << g[i][j]-1;
      |                                   ~~~~~~~^~
Main.cpp: In function 'long long int get_next(long long int)':
Main.cpp:23:30: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
   23 |         if (!(bef & (1LL << i-1))) {
      |                             ~^~
Main.cpp:25:36: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
   25 |                 if (cur & (1LL << j-1)) cur -= 1LL << j-1;
      |                                   ~^~
Main.cpp:25:56: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
   25 |                 if (cur & (1LL << j-1)) cur -= 1LL << j-1;
      |                                                       ~^~
Main.cpp:27:28: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
   27 |             cur += 1LL << i-1;
      |                           ~^~
Main.cpp: In function 'void print_set(long long int)':
Main.cpp:44:27: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
   44 |         if (id & (1LL << i-1)) cout << i << ' ';
      |                          ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...