Pagini recente » Cod sursa (job #73076) | pregatireoji2011 | Cod sursa (job #2311268) | Cod sursa (job #41766) | Cod sursa (job #385320)
Cod sursa(job #385320)
#include <stdio.h>
int main()
{
FILE* fin = fopen("datorii.in", "r");
FILE* fout = fopen("datorii.out", "w");
int zile[15001];
int N, M;
fscanf(fin, "%d %d", &N, &M);
zile[0] = 0;
int sum[151];
int s = 0;
int j = 1;
sum[0] = 0;
for (int i = 1; i <= N; i++)
{
fscanf(fin, "%d", &zile[i]);
s += zile[i];
if ((i % 100) == 0)
{
sum[j++] = s;
}
}
int A, B, C;
for (int i = 0; i < M; i++)
{
fscanf(fin, "%d %d %d", &A, &B, &C);
int idxB = B / 100;
int idxC = C / 100;
if (A == 0)
{
int lim1 = idxB;
if (B % 100) lim1++;
for (int k = lim1; k < j; k++)
sum[k] -= C;
zile[B] -= C;
}
else
{
int aux = 1;
if (idxB == idxC)
aux = 0;
int s1 = 0, s2 = 0;
if (B % 100)
{
for (int k = idxB*100 + aux; k < B; k++)
{
s1 += zile[k];
}
}
else
{
s1 = -zile[B];
}
if (C % 100)
{
for (int k = idxC*100 + aux; k <= C; k++)
{
s2 += zile[k];
}
}
fprintf(fout, "%d\n", sum[idxC]-sum[idxB]+s2-s1);
}
}
fclose(fin);
fclose(fout);
return 0;
}