Cod sursa(job #3155070)

Utilizator jboiwudwjeujuheijai ss jboiwudwjeujuhe Data 7 octombrie 2023 11:57:10
Problema Pascal Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <iostream>

using namespace std;

int nr[5000000][3];

int main() {
    int n, q;
    cin >> n >> q;
    // pt 2
    nr[2][0] = 1;
    for(int i = 2; i <= n / 2; i ++) {
        nr[2 * i][0] = nr[i][0] + 1;
        nr[2 * i - 1][0] += nr[2 * (i - 1)][0];
        nr[2 * i][0] += nr[2 * i - 1][0];
    }
    // pt 3
    nr[3][0] = 1;
    for(int i = 2; i <= n / 3; i ++) {
        nr[3 * i][1] = nr[i][1] + 1;
        nr[3 * i - 2][1] += nr[3 * (i - 1)][1];
        nr[3 * i - 1][1] += nr[3 * i - 2][1];
        nr[3 * i][1] += nr[3 * i - 1][1];
    }
    // pt 5
    nr[5][0] = 1;
    for(int i = 2; i <= n / 5; i ++) {
        nr[5 * i][2] = nr[i][2] + 1;
        nr[5 * i - 4][2] += nr[5 * (i - 1)][2];
        nr[5 * i - 3][2] += nr[5 * i - 4][2];
        nr[5 * i - 2][2] += nr[5 * i - 3][2];
        nr[5 * i - 1][2] += nr[5 * i - 2][2];
        nr[5 * i - 0][2] += nr[5 * i - 1][2];
    }
    // bruh
    int cnt = 0;
    for(int i = 1; i <= n; i ++) {
        if(q == 2) {
            if(nr[n][0] > nr[i][0] + nr[n - i][0]) {
                cnt ++;
            }
        } else if(q == 3) {
            if(nr[n][1] > nr[i][1] + nr[n - i][1]) {
                cnt ++;
            }
        } else if(q == 4) {
            if(nr[n][0] - (nr[i][0] + nr[n - i][0]) >= 2) {
                cnt ++;
            }
        } else if(q == 5) {
            if(nr[n][2] > nr[i][2] + nr[n - i][2]) {
                cnt ++;
            }
        } else {
            int x = nr[n][1] - (nr[i][1] + nr[n - i][1]);
            int y = nr[n][0] - (nr[i][0] + nr[n - i][0]);
            if(min(x, y) > 0) {
                cnt ++;
            }
        }
    }
    cout << cnt;
    return 0;
}