Submission #1310293

#TimeUsernameProblemLanguageResultExecution timeMemory
1310293quollcucumber`Mensza (COI22_mensza)C++20
0 / 100
5094 ms332 KiB
#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
#pragma GCC target("avx2")
// #define int long long
using namespace std;
void print(int a) {
    string s;
    while(a > 0) {
        s += '0' + a % 10;
        a /= 10;
    }
    reverse(s.begin(), s.end());
    for(char i : s) {
        putchar(i);
    }
}
int readint() {
    int a = 0;
    char c = getchar();
    while(isspace(c)) c = getchar();
    while(!isspace(c)) {
        a *= 10;
        a += c - '0';
    }
    return a;
}
signed main(){
    int l = readint(), q = readint();
    for(int i = 0; i < q; i++) {
        string s;
        char c = getchar();
        while(isspace(c)) c =getchar();
        while(!isspace(c)) {
            s.push_back(c);
            c = getchar();
        }
        if(s[0] == 'a') {
            int num = readint();
            vector<int> ans;
            for(int j = 1; j <= 20; j++) {
                if(num % 2) {
                    for(int k = 0; k < j; k++) ans.push_back(j);
                }
                num /= 2;
            }
            print(ans.size());
            for(int j : ans) {
                print(j);
                putchar(' ');
            }
            putchar('\n');
        }else if(s[0] == 'b'){
            int num= readint();
            vector<int> ans;
            for(int j = 21; j <= 40; j++) {
                if(num % 2) {
                    for(int k = 0; k < j; k++) ans.push_back(j);
                }
                num /= 2;
            }
            print(ans.size());
            for(int j : ans) {
                print(j);
                putchar(' ');
            }
            putchar('\n');
        }else if(s[0] == 'c') {
            int n = readint();
            int a = 0, b = 0;
            set<int> se;
            for(int j = 0; j < n; j++) {
                int v = readint();
                se.insert(v);
            }
            for(int j = 1; j <= 20; j++) {
                if(se.contains(j)) {
                    a += pow(2, j - 1);
                }
            }
            for(int j = 21; j <= 41; j++) {
                if(se.contains(j)) {
                    b += pow(2, j - 21);
                }
            }
            if(a > b) {
                putchar('A');
                putchar('\n');
            }else {
                putchar('B');
                putchar('\n');
            }
        }
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...