이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
using namespace std;
int N, K, Q, z, n, nuo, iki, sek, ats = 0, sum = 0;
int m[1000005];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(nullptr);
cout.tie(nullptr);
cin >> N >> K;
for(int a = 0; a < N; a++)
{
cin >> m[a];
}
cin >> Q;
for(int a = 0; a < Q; a++)
{
cin >> z;
if(z == 1)
{
cin >> n;
n--;
int buv = n, p = m[n];
for(int b = 1; b < K; b++)
{
cin >> n;
n--;
m[buv] = m[n];
buv = n;
}
m[buv] = p;
}
if(z == 2)
{
cin >> nuo >> iki >> sek;
nuo--;
iki--;
int pr = 0;
sum = 0;
for(int b = nuo; b <= iki; b++)
{
sum+= m[b];
if(nuo == 0 && b + 1 >= sek)
{
ats += sum - pr;
pr += m[b - sek + nuo + 1];
// cout << "pr = " << pr << ", b - sek + nuo + 1 = " << b - sek + nuo + 1 << ", m[b - sek + nuo + 1] = " << m[b - sek + nuo + 1] << '\n';
}
else if((b - min(nuo, iki) + 1 >= sek) || (sek == 1 && nuo == iki))
{
ats += sum - pr;
pr += m[b - sek + nuo];
}
// cout << "min(nuo, iki) = " << min(nuo, iki) << ", b = " << b << ", m[b] = " << m[b] << ", sum = " << sum << ", pr = " << pr << ", ats = " << ats << '\n';
}
cout << ats << '\n';
ats = 0;
}
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |