제출 #1081866

#제출 시각아이디문제언어결과실행 시간메모리
1081866ALeonidou사탕 분배 (IOI21_candies)C++17
8 / 100
73 ms21688 KiB
#include "candies.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define F first
#define S second
#define pb push_back
#define sz(x) (ll)x.size()

typedef vector <int> vl;
typedef vector <ll> vi;
typedef pair <ll,ll> ii;
typedef vector <ii> vii;

#define dbg(x) cout<<#x<<": "<<x<<endl;
#define dbg2(x,y) cout<<#x<<": "<<x<<" "<<#y<<": "<<y<<endl;
#define dbg3(x,y,z) cout<<#x<<": "<<x<<" "<<#y<<": "<<y<<" "<<#z<<": "<<z<<endl;

void printVct(vi &v){
    for (ll i =0; i<sz(v); i++){
        cout<<v[i]<<" ";
    }
    cout<<endl;
}

vl distribute_candies(vl ccc, vl lll, vl rrr, vl vvv) {
    vi c(sz(ccc)), l(sz(lll)), r(sz(lll)), v(sz(lll));
    for (ll i =0; i<sz(ccc); i++){
        c[i] = ccc[i];
    }
    for (ll i =0; i<sz(lll); i++){
        l[i] = lll[i];
        r[i] = rrr[i];
        v[i] = vvv[i];
    }
    ll n = sz(c);
    ll q = sz(l);
    vi ans(n);

    vi s(n+1,0);
    for (ll i =0; i<q; i++){
        s[l[i]] += v[i];
        s[r[i]+1] -= v[i];
    }

    ll p = 0;
    for (ll i =0; i<n; i++){
        p += s[i];
        ans[i] = min(c[i], p);
    }

    vl final_ans(sz(ans));
    for (ll i= 0; i<sz(ans); i++){
        final_ans[i] = ans[i];
    }

    return final_ans;
}

/*
4
20 20 20 20
3
0 2 10
0 1 5
1 3 15


3
10 15 13
2
0 2 20
0 1 -11

*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...