Pagini recente » Cod sursa (job #2523782) | Cod sursa (job #578101) | Cod sursa (job #439248) | Cod sursa (job #2385823) | Cod sursa (job #480866)
Cod sursa(job #480866)
#include <cstdio>
#include <algorithm>
using namespace std;
#define file_in "eprubeta.in"
#define file_out "eprubeta.out"
#define nmax 2010
int n,m,a,z,b;
int mat[nmax][nmax];
void adfile(void){
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d %d %d %d", &n, &m, &z, &a, &b);
return ;
}
void solve(void){
for (int i=0;i<n;++i)
for (int j=0;j<n;++j)
mat[i][j]=((i+a)*(j+b)/4)%z;
for (int i=0;i<m;++i)
{
int tip,x,y;
scanf("%d %d %d", &tip, &x, &y);
if (tip==2)
{
int sum=0;
for (int j=x;j<=y;++j)
for (int k=x;k<=y;++k)
sum+=mat[j][k];
printf("%d\n", sum);
}
else
{
int d=b-a+1;
for (int j=0;j<d/2;++j)
{
for (int k=0;k<d;++k)
swap(mat[x+j][x+k],mat[y-j][y-k]);
}
if (d&1)
{
for (int j=0;j<d/2;++j)
swap(mat[x+d/2][x+j],mat[x+d/2][y-j]);
}
}
}
int rez=0;
for (int i=0;i<n;++i)
{
int sum=0;
for (int j=0;j<n;++j)
sum+=mat[i][j];
rez+= sum*sum*(i+1);
}
printf("%d\n", rez);
}
int main(){
adfile();
solve();
return 0;
}