Submission #609771

#TimeUsernameProblemLanguageResultExecution timeMemory
609771StrawHatWessDistributing Candies (IOI21_candies)C++17
11 / 100
106 ms10696 KiB
#include "candies.h" #include <bits/stdc++.h> using namespace std; #define FOR(i,a,b) for(int i=a; i<b; i++) typedef long long ll; typedef vector<int>vi; #define pb push_back #define sz(x) (int)x.size() #define all(x) begin(x),end(x) typedef pair<int,int>pi; #define fi first #define se second typedef vector<pi>vpi; #define eb emplace_back bool ckmin(int &x, int y){ bool f=(x>y); x=min(x,y); return f; } bool ckmax(int &x, int y){ bool f=(x<y); x=max(x,y); return f; } //------- int N,Q; vi distribute_candies(vi C, vi L, vi R, vi V) { N=sz(C); Q=sz(L); if(max(N,Q)<=2000){ vi ans(N,0); FOR(i,0,Q){ int l=L[i], r=R[i]; FOR(j,l,r+1){ ans[j]+=V[i]; ckmax(ans[j],0); ckmin(ans[j],C[j]); } } return ans; } vector<ll>q(N+1,0); FOR(i,0,Q){ int l=L[i], r=R[i]; q[l]+=V[i]; q[r+1]-=V[i]; } ll cur=0; vi ans(N); FOR(i,0,N){ cur+=q[i]; ans[i]=min((ll)C[i],cur); } return ans; } /* 3 10 15 13 2 0 2 20 0 1 -11 0 4 13 */
#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...