Pagini recente » Cod sursa (job #2840497) | Cod sursa (job #2489297) | Cod sursa (job #2925855) | Cod sursa (job #879737) | Cod sursa (job #480863)
Cod sursa(job #480863)
#include <cstdio>
#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 ;
}
#define swap(a,b) ((a)^=(b)^=(a)^=(b))
#define mod (1<<32)
void solve(void){
int tip,x,y,k,i,j;
//genereaza matricea
for (i=0;i<n;++i)
for (j=0;j<n;++j)
mat[i][j]=((a+i)*(b+j)/4)%z;
/*for (i=0;i<n;++i)
{
for (j=0;j<n;++j)
printf("%d ", mat[i][j]);
printf("\n");
}*/
for (i=0;i<m;++i)
{
scanf("%d %d %d", &tip,&x,&y);
if (tip==2)
{
int suma=0;
for (j=x;j<=y;++j)
for (k=x;k<=y;++k)
suma+=mat[j][k];
printf("%d\n", suma);
}
else
{
int d=b-a+1;
for (j=0;j<d/2;++j) {
for (k=0;k<d;++k)
{
int aux;
aux=mat[a+j][a+k];
mat[j+a][a+k]=mat[b-j][b-k];
mat[b-j][b-k]=aux;
}
//swap(mat[a+j][a+k],mat[b-j][b-k]);
}
if (d%2==1)
{
for (j=0;j<d/2;++j)
{
int aux;
aux=mat[a+d/2][a+j];
mat[a+d/2][a+j]=mat[a+d/2][b-j];
mat[a+d/2][b-j]=aux;
//swap(mat[a+d/2][a+j],mat[a+d/2][b-j]);
}
}
}
}
/*for (i=0;i<n;++i)
{
for (j=0;j<n;++j)
printf("%d ", mat[i][j]);
printf("\n");
}*/
int res=0;
for (i=0;i<n;++i) {
int suma=0;
for (j=0;j<n;++j)
suma+=mat[i][j];
res+=suma*suma*(i+1);
//res&=(mod-1);
}
printf("%d\n", res);
}
int main(){
adfile();
solve();
return 0;
}