#include "candies.h"
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll long long int
#define all(x) x.begin(),x.end()
#define vi vector<int>
#define pii pair<int,int>
#define ff first
#define ss second
const int N = 3e5+100;
std::vector<int> distribute_candies(std::vector<int> cc, std::vector<int> l, std::vector<int> r, std::vector<int> v) {
vector<ll> c(all(cc));
int n = c.size();
int q = l.size();
std::vector<int> s(n);
vector<vector<int>> Q(n);
for(int i = 0; i < q; ++i){
for(int j = l[i]; j <= r[i]; ++j){
Q[j].pb(v[i]);
}
}
for(int i = 0; i < n; ++i){
if(Q[i].size() == 0) continue;
ll sum = 0;
int f = 0;
for(int j = Q[i].size() - 1; j >= 0; --j){
// cout << Q[i][j] << ' ';
ll v = Q[i][j] + sum;
if(Q[i][j] >= c[i]){
ll x = c[i];
for(int l = j + 1; l < Q[i].size(); ++l){
x = max(0ll, min(c[i], x + Q[i][l]));
}
s[i] = x;
f = -1;
break;
}
else if(v >= c[i]){
f = -1;
int last = j - 1, last2 = j - 1;
ll cur = 0;
for(int l = j; l < Q[i].size(); ++l){
cur += Q[i][l];
if(cur >= c[i]){
last = l;
cur = c[i];
}
if(cur <= -c[i]){
last2 = l;
cur = -c[i];
}
}
// cout << last << ' ' << last2 << '\n';
ll sum;
if(last2 > last || max(last, last2) == j-1) sum = 0;
else sum = c[i];
last = max(last, last2);
// cout << last << ' ';
for(int l = last + 1; l < Q[i].size(); ++l){
sum += Q[i][l];
}
s[i] = sum;
break;
}else if(Q[i][j] <= -c[i]){
ll x = 0;
for(int l = j + 1; l < Q[i].size(); ++l){
x = max(0ll, min(c[i], x + Q[i][l]));
}
s[i] = x;
f = -1;
break;
}else if(v <= -c[i]){
int last = j - 1, last2 = j - 1;
ll cur = 0;
for(int l = j; l < Q[i].size(); ++l){
cur += Q[i][l];
if(cur >= c[i]){
last = l;
cur = c[i];
}
if(cur <= -c[i]){
last2 = l;
cur = -c[i];
}
}
ll sum;
if(last2 > last || max(last, last2) == j-1) sum = 0;
else sum = c[i];
last = max(last, last2);
for(int l = last + 1; l < Q[i].size(); ++l){
sum += Q[i][l];
}
s[i] = sum;
f = -1;
break;
}
sum = v;
}
if(f != -1){
ll x = 0;
for(int l = 0; l < Q[i].size(); ++l){
x = max(0ll, min(c[i], x + Q[i][l]));
}
s[i] = x;
}
// if(x==-1) continue;
// sum = 0;
// for(int j = x; j < Q[i].size(); ++j){
// sum += Q[i][j];
// sum = max(0ll, min(sum, c[i]));
// }
// s[i] = sum;
}
return s;
}
Compilation message
candies.cpp: In function 'std::vector<int> distribute_candies(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
candies.cpp:34:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
34 | for(int l = j + 1; l < Q[i].size(); ++l){
| ~~^~~~~~~~~~~~~
candies.cpp:45:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
45 | for(int l = j; l < Q[i].size(); ++l){
| ~~^~~~~~~~~~~~~
candies.cpp:63:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
63 | for(int l = last + 1; l < Q[i].size(); ++l){
| ~~^~~~~~~~~~~~~
candies.cpp:70:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
70 | for(int l = j + 1; l < Q[i].size(); ++l){
| ~~^~~~~~~~~~~~~
candies.cpp:79:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
79 | for(int l = j; l < Q[i].size(); ++l){
| ~~^~~~~~~~~~~~~
candies.cpp:94:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
94 | for(int l = last + 1; l < Q[i].size(); ++l){
| ~~^~~~~~~~~~~~~
candies.cpp:105:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
105 | for(int l = 0; l < Q[i].size(); ++l){
| ~~^~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Incorrect |
1 ms |
344 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
2428 ms |
2097152 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Incorrect |
1133 ms |
572320 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
604 KB |
Output is correct |
3 |
Incorrect |
3540 ms |
1612328 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Incorrect |
1 ms |
344 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |