Submission #630017

#TimeUsernameProblemLanguageResultExecution timeMemory
630017ZsofiaKeresztelyAddk (eJOI21_addk)C++14
0 / 100
367 ms3576 KiB
#include <bits/stdc++.h> using namespace std; vector<int> lstairs, rstairs, pref; int n; void upd(vector<int> &a){ pref.assign(n+1, 0); lstairs.assign(n+1, 0); rstairs.assign(n+1, 0); for (int i=1; i<n+1; i++){ pref[i] = pref[i-1] + a[i]; lstairs[i] = lstairs[i-1] + pref[i]; } rstairs[n] = a[n]; for (int i=n-1; i>0; i--){ rstairs[i] = rstairs[i+1] + (pref[n] - pref[i-1]); } return; } int main(){ int k; cin >> n >> k; vector<int> a(n+1); vector<int> orig; for (int i=1; i<n+1; i++){ cin >> a[i]; } orig = a; upd(a); int q, type, val, l, r, m, sum, lastl, lastr, x; vector<int> ind(k); set<int> toupd; cin >> q; for (int i=0; i<q; i++){ cin >> type; if (type == 1){ cin >> ind[0]; toupd.insert(ind[0]); val = a[ind[0]]; for (int j=1; j<k; j++){ cin >> ind[j]; toupd.insert(ind[j]); a[ind[j-1]] = a[ind[j]]; } a[ind[k-1]] = val; if (toupd.size() * toupd.size() >= n * k){ upd(a); orig = a; toupd.clear(); } } else{ cin >> l >> r >> m; lastl = min((l+r)/2, l+m-1); lastr = max((l+r)/2+1, l-m+1); sum = rstairs[l] - rstairs[lastl+1] - (lastl - l + 1) * (pref[n] - pref[lastl]) + lstairs[r] - lstairs[lastr-1] - (r - lastr + 1) * pref[lastr - 1] + (lastl - 1 + 1) * (pref[lastr-1] - pref[lastl]); for (auto i : toupd){ x = min(i - l + 1, r - i + 1); if (x > 0){ sum += (a[i] - orig[i]) * x; } } cout << sum << "\n"; } } return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:47:39: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   47 |       if (toupd.size() * toupd.size() >= n * k){
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...