Pagini recente » Cod sursa (job #3225575) | Cod sursa (job #2832218) | Cod sursa (job #2314677) | Cod sursa (job #1826638) | Cod sursa (job #162939)
Cod sursa(job #162939)
#include <cstdio>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#define maxN 2048
using namespace std;
unsigned char mat[maxN][maxN];
int main() {
freopen("eprubeta.in", "rt", stdin);
freopen("eprubeta.out", "wt", stdout);
int N, M;
scanf("%d %d", &N, &M);
int X, A, B;
scanf("%d %d %d", &X, &A, &B);
for (int i = 0; i < N; ++i)
for (int j = 0; j < N; ++j)
// scanf("%d", &mat[i][j]);
mat[i][j] = ((i + A) * (j + B) / 4) % X;
long long ops = 0;
for (int i = 0; i < M; ++i) {
int o, a, b;
scanf("%d %d %d", &o, &a, &b);
ops += (b-a+1)*(b-a+1);
if (o == 2) {
int sum = 0;
for (int j = a; j <= b; ++j)
for (int k = a; k <= b; ++k)
sum += mat[j][k];
printf("%d\n", sum);
} else {
int l = b-a+1;
for (int j = 0; j < l/2; ++j) {
for (int k = 0; k < l; ++k)
swap(mat[a+j][a+k], mat[b-j][b-k]);
}
if (l & 1) {
for (int j = 0; j < l/2; ++j)
swap(mat[a + l/2][a+j], mat[a + l/2][b-j]);
}
}
}
fprintf(stderr, "ops = %lld\n", ops);
// encriptam matricea
unsigned int result = 0;
for (int i = 0; i < N; ++i) {
unsigned int sum = 0;
for (int j = 0; j < N; ++j)
sum += mat[i][j];
result += sum*sum*(i+1);
}
printf("%u\n", result);
return 0;
}