Submission #1356080

#TimeUsernameProblemLanguageResultExecution timeMemory
1356080Joshua_AnderssonDistributing Candies (IOI21_candies)C++20
0 / 100
66 ms7336 KiB
#include "candies.h"

#pragma GCC optimize("O3")
#pragma GCC target("avx2")
#include <vector>
#include <iostream>
using namespace std;

using vi = vector<int>;
#define sz(x) ((int)x.size())
#define rep(i,n) for (int i = 0; i < (n); i++)
#define repp(i,a,n) for (int i = (a); i < (n); i++)

std::vector<int> distribute_candies(std::vector<int> c, std::vector<int> l,
    std::vector<int> r, std::vector<int> v) {

    int orig_n = sz(c);
    const int B = 1000;
    int n = sz(c);
    while (n%B!=0) n++;
    while (sz(c) < n) c.push_back(0);

    vi ans(n);

    for (int b = 0; b < n; b+=B) {
        rep(q, sz(v)) {
            int lo = max(b*B, l[q]);
            int hi = min((b+1)*B, r[q]+1);
            
            #pragma GCC ivdep
            repp(i,lo,hi) {
                ans[i]+=v[q];
                ans[i]=max(0,ans[i]);
                ans[i]=min(c[i],ans[i]);
            }
            // rep(i,3) {
            //     cout << ans[i] << ' ';
            // }
            // cout << '\n';
        }
    }

    while (sz(ans)>orig_n) ans.pop_back();
    return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...