답안 #236169

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
236169 2020-05-31T10:38:44 Z ne4eHbKa Sažetak (COCI17_sazetak) C++17
64 / 160
43 ms 40184 KB
//{ <defines>
#include <bits/stdc++.h>
using namespace std;

//#pragma comment(linker, "/stack:200000000")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,-O3")

#define fr(i, n) for(int i = 0; i < n; ++i)
#define fo(n) fr(i, n)

#define re return
#define ef else if
#define ifn(x) if(!(x))
#define _  << ' ' <<

#define ft first
#define sd second
#define ve vector
#define pb push_back
#define eb emplace_back

#define sz(x) int((x).size())
#define bnd(x) x.begin(), x.end()
#define clr(x, y) memset((x), (y), sizeof (x))

typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef ve<int> vi;

inline ll time() {re chrono :: system_clock().now().time_since_epoch().count();}
mt19937 rnd(time());
mt19937_64 RND(time());

template<typename t> inline void umin(t &a, t b) {a = min(a, b);}
template<typename t> inline void umax(t &a, t b) {a = max(a, b);}

int md = 998244353;

inline int m_add(int&a, int b) {a += b; if(a < 0) a += md; if(a >= md) a -= md; re a;}
inline int m_sum(int a, int b) {a += b; if(a < 0) a += md; if(a >= md) a -= md; re a;}
inline int m_mul(int&a, int b) {re a = 1ll * a * b % md;}
inline int m_prod(int a, int b) {re 1ll * a * b % md;}

int m_bpow(ll A, ll b) {
    int a = A % md;
    ll ans = 1;
    for(ll p = 1ll << 63 - __builtin_clzll(b); p; p >>= 1) {
        (ans *= ans) %= md;
        if(p & b)
            (ans *= a) %= md;
    }
    re ans;
}

//const ld pi = arg(complex<ld>(-1, 0));
//const ld pi2 = pi + pi;
const int oo = 2e9;
const ll OO = 4e18;
//} </defines>
const int N = 5e6 + 5;

int f[N];
int n;

void go(int i, int v) {
    if(!f[i]) re void(f[i] = v);
    if(f[i] == v) re;
    if(f[i] > v) {
        go(i + v, f[i] - v);
        f[i] = v;
    } else {
        go(i + f[i], v - f[i]);
    }
}

void solve() {
    clr(f, 0);
    int m;
    cin >> n >> m;
    fo(m) {
        int x; cin >> x;
        for(int j = 0; j < n; j += x) go(j, min(x, n - j));
    }
    cout << count(f, f + n, 1) << endl;
}

int main() {
#ifdef _LOCAL
    freopen("in.txt", "r", stdin);
    int tests; cin >> tests;
    for(int test = 1; test <= tests; ++test) {
		cerr << "case #" << test << endl;
        solve();
        cerr << endl;
    }
#else
//    freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
    ios_base :: sync_with_stdio(0); cin.tie(0); cout.tie(0);
    solve();
#endif
    return 0;
}

Compilation message

sazetak.cpp: In function 'int m_bpow(ll, ll)':
sazetak.cpp:50:26: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
     for(ll p = 1ll << 63 - __builtin_clzll(b); p; p >>= 1) {
                       ~~~^~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 19968 KB Output is correct
2 Correct 15 ms 19968 KB Output is correct
3 Correct 37 ms 19968 KB Output is correct
4 Correct 38 ms 19840 KB Output is correct
5 Runtime error 36 ms 40184 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 38 ms 40184 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 40 ms 40060 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 39 ms 40080 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 40 ms 40056 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 43 ms 40056 KB Execution killed with signal 11 (could be triggered by violating memory limits)