Submission details
Task:Dice Combinations
Sender:aalto26ch_045
Submission time:2026-09-14 02:30:30 +0300
Language:C++ (C++23)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.00 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.01 sdetails
#14ACCEPTED0.03 sdetails
#15ACCEPTED0.04 sdetails
#16ACCEPTED0.04 sdetails
#17ACCEPTED0.04 sdetails
#18ACCEPTED0.00 sdetails
#19ACCEPTED0.04 sdetails
#20ACCEPTED0.00 sdetails

Code

#include <iostream>
#include <vector>
#include <functional>


void printNewLine(){std::cout << "\n";}
template<typename T, typename... Ts>
std::tuple<Ts...> tail(std::tuple<T,Ts...> as){
    return std::apply([](T &a, Ts... b){return std::make_tuple(b...);},as);
}

template<typename T>
void print(T a){std::cout << a;}

template<typename T, typename Ts>
void print(std::tuple<T,Ts> a){
    print(std::get<0>(a));
    print(" ");
    print(std::get<1>(a));
}

template<typename T, typename... Ts>
void print(std::tuple<T,Ts...> a){
    print(std::get<0>(a));
    print(" ");
    print(tail(a));
}
template<typename T>
void println(T a){print(a);printNewLine();}
template<typename T>
void printVec(std::vector<T> arr, int width = -1){
    if (width == -1) width = arr.size();
    for (int i = 0; i < (int)arr.size(); i++){
        if ((i%width) == width-1){
            print(" ");
            println(arr[i]);
        }else if ((i%width) == 0){        
            print(arr[i]);
        }else {
            print(" ");
            print(arr[i]);
        }
    }    
}

std::tuple<int> readInt1(){
    int a;
    std::cin >> a;
    return {a};
}
std::tuple<int,int> readInt2(){
    int a, b;
    std::cin >> a >> b;
    return {a,b};
}
std::tuple<int,int,int> readInt3(){
    int a, b, c;
    std::cin >> a >> b >> c;
    return {a,b,c};
}

std::vector<int> readVecInt(int n){
    std::vector<int> arr(n);
    for (int i = 0; i < n; i++){
        int a;
        std::cin >> a;
        arr[i] = a;
    }
    return arr;
}

std::vector<std::tuple<int,int>> readVecTup2(int n){
    std::vector<std::tuple<int,int>> arr(n);
    for (int i = 0; i < n; i++){
        int a, b;
        std::cin >> a;
        std::cin >> b;
        arr[i] = {a,b};
    }
    return arr;
}

std::vector<std::tuple<int,int,int>> readVecTup3(int n){
    std::vector<std::tuple<int,int,int>> arr(n);
    for (int i = 0; i < n; i++){
        int a, b, c;
        std::cin >> a;
        std::cin >> b;
        std::cin >> c;
        arr[i] = {a,b,c};
    }
    return arr;
}

template<typename T>
auto getTupleSort(){
    auto tupleSort = [](const std::tuple<T,T> &a, const std::tuple<T,T> &b){ 
        auto [ax, ay] = a;
        auto [bx, by] = b;
        return ay < by; };
    return tupleSort;
}


template<typename T>
void sortBy(std::vector<T> &arr){
    std::sort(arr.begin(),arr.end(),[](const T &a, const T &b){ return a < b; });
}


template<typename T>
T binarySearch(T min, T max, std::function<bool(T)> leq){
    if (min == max) return max;
    T guess = (min+max)/2;
    if (leq(guess)){
        return binarySearch(min,guess,leq);
    }else{
        return binarySearch(guess+1,max,leq);
    }
}

template<typename T>
T binarySearchDecending(T min, T max, std::function<bool(T)> leq){
    std::function<bool(T)> gt = [leq](T x){
        return !leq(x);
    };
    return binarySearch(min,max+1, gt)-1;
}

void carManufacturing(){
    auto [n, t] = readInt2();
    //auto [n, m, k] = readInt3();
    auto arr = readVecInt(n);
    double s = 0;
    for (int x: arr){
        s += 1.0/x;
    }
    std::function<bool(long long)> leq = [&arr,t](long long time){
        long long s = 0;
        for (int x : arr){
            s += time/x;
        }
        return t <= s;
    };
    println(binarySearch((long long)0,(long long)(t/s*(long long)n),leq));
}

template<typename T>
double avg(std::vector<T> &arr){
    double mult = 1.0/arr.size();
    double s = 0;
    for (T x : arr){
        s += mult*(double)x;
    }
    return s;
}
template<typename T>
T sum(std::vector<T> &arr){
    T s = 0;
    for (T x : arr){
        s += x;
    }
    return s;
}

void bottle(){
    auto [n] = readInt1();
    //auto [n, t] = readInt2();
    //auto [n, m, k] = readInt3();
    auto arr = readVecInt(n);
    double s = avg(arr);
    
    std::function<bool(long long)> leq = [&arr](long long t){
        long long s = 0;
        for (long long x : arr){
            if (x-t > 0){
                s += (x-t)/2;
            }else{
                s += (x-t);
            }
        }
        return 0 <= s;
    };
    println(binarySearchDecending((long long)0,(long long)(s),leq));
}

#include <set>
#include <algorithm>
void movie(){
    auto [n] = readInt1();
    auto arr = readVecInt(2*n);
    int* s = &arr[0];
    std::sort((long*)(s),(long*)(s)+n);
    int time = 0;
    int num = 0;
    for (int i = 0; i < n; i++){
        if (time <= arr[2*i]){
            time = arr[2*i+1];
            num += 1;
        }
    }
    println(num);
}

/*

    for (int i = 0; i < n; i++){
        int temp = arr[2*i+1];
        arr[2*i+1] = arr[2*i];
        arr[2*i] = temp;
    }
        */

void cow(){
    auto [n] = readInt1();
    auto dum = readVecInt(n);
    print(1);
    for (int i = 1; i < 30; i++){
        print(" ");
        if ((1<<i) <= 1000*1000*1000){
            print(1<<i);
        } else{
            print(0);
        }
    }    
}
template<typename T>
std::vector<T> cloneVec(std::vector<T> a){
    return a;
}

void castle(){
    auto [n] = readInt1();
    auto arr = readVecTup2(n);
    std::vector<std::tuple<int,int>> arr2 = cloneVec(arr);
    for (int i = 0; i < n; i++){
        auto [u,m] = arr[i];
        arr2[i] = {-(u+m),i};
    }
    sortBy(arr2);
    int us = 0;
    int ms = 0;
    printVec(arr2);
    for (int i = 0; i < n; i++){
        auto [s,idx] = arr2[i];
        auto [u,m] = arr[idx];
        if (i%2 == 0){
            us += u;
        } else {
            ms += m;
        }
    }
    println(us-ms);
}

template<typename T>
void extendedFibonachi(std::vector<T> &initial, int nlast, T upto, T mod){
    for (int i = nlast; i <= upto; i++){
        initial[i] = 0;
        for (int n = 1; n <= nlast && n <= i; n++){
            initial[i] += initial[i-n];
            initial[i] %=mod;
        }
    }
}

void dice(){
    auto [n] = readInt1();
    std::vector<long long> arr(std::max(7,n+1));
    arr[0] = 1;
    for (int i = 0; i < 6; i++){
        arr[i+1] = 1<<i;
    }
    extendedFibonachi(arr,6,(long long)n,(long long)1000*1000*1000+7);
    println(arr[n]);
}


int main() {
    //carManufacturing();
    //bottle();
    //movie();
    //cow();
    //castle();
    dice();
    exit(0);
}

Test details

Test 1

Verdict: ACCEPTED

input
1

correct output
1

user output
1

Test 2

Verdict: ACCEPTED

input
2

correct output
2

user output
2

Test 3

Verdict: ACCEPTED

input
3

correct output
4

user output
4

Test 4

Verdict: ACCEPTED

input
4

correct output
8

user output
8

Test 5

Verdict: ACCEPTED

input
5

correct output
16

user output
16

Test 6

Verdict: ACCEPTED

input
6

correct output
32

user output
32

Test 7

Verdict: ACCEPTED

input
7

correct output
63

user output
63

Test 8

Verdict: ACCEPTED

input
8

correct output
125

user output
125

Test 9

Verdict: ACCEPTED

input
9

correct output
248

user output
248

Test 10

Verdict: ACCEPTED

input
10

correct output
492

user output
492

Test 11

Verdict: ACCEPTED

input
50

correct output
660641036

user output
660641036

Test 12

Verdict: ACCEPTED

input
1000

correct output
937196411

user output
937196411

Test 13

Verdict: ACCEPTED

input
123456

correct output
113810539

user output
113810539

Test 14

Verdict: ACCEPTED

input
654321

correct output
615247550

user output
615247550

Test 15

Verdict: ACCEPTED

input
999998

correct output
39372206

user output
39372206

Test 16

Verdict: ACCEPTED

input
999999

correct output
511319454

user output
511319454

Test 17

Verdict: ACCEPTED

input
1000000

correct output
874273980

user output
874273980

Test 18

Verdict: ACCEPTED

input
1001

correct output
94201505

user output
94201505

Test 19

Verdict: ACCEPTED

input
999997

correct output
74225807

user output
74225807

Test 20

Verdict: ACCEPTED

input
40

correct output
567401756

user output
567401756