Submission #1053041

#TimeUsernameProblemLanguageResultExecution timeMemory
1053041mychecksedadDistributing Candies (IOI21_candies)C++17
0 / 100
2351 ms2097152 KiB
#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; } if(cur <= -c[i]){ last2 = l; } } ll sum; if(last2 > last || max(last, last2) == j-1) sum = 0; else sum = c[i]; for(int l = last + 1; l < Q[i].size(); ++l){ sum += Q[i][l]; } // cout << "wtf" << sum << ' '; 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; } if(cur <= -c[i]){ last2 = l; } } ll sum; if(last2 > last || max(last, last2) == j-1) sum = 0; else sum = c[i]; 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 (stderr)

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:57:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |         for(int l = last + 1; l < Q[i].size(); ++l){
      |                               ~~^~~~~~~~~~~~~
candies.cpp:65:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |         for(int l = j + 1; l < Q[i].size(); ++l){
      |                            ~~^~~~~~~~~~~~~
candies.cpp:74:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |         for(int l = j; l < Q[i].size(); ++l){
      |                        ~~^~~~~~~~~~~~~
candies.cpp:86:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   86 |         for(int l = last + 1; l < Q[i].size(); ++l){
      |                               ~~^~~~~~~~~~~~~
candies.cpp:97:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   97 |       for(int l = 0; l < Q[i].size(); ++l){
      |                      ~~^~~~~~~~~~~~~
#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...