Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// se da o matrice mare a[m,n], stiind ca este completat cu numere 1,2,...,m*n
- /// diagonala dupa diagonala, serpuit.
- /// Dandu-se linia si coloana, sa se calculeze valoarea lui k=a[lin,col]}
- #include <bits/stdc++.h>
- #define LL long long int
- using namespace std;
- ifstream f("piatra.in");
- ofstream g("piatra.out");
- LL p,minim,m,s,n,lin,col,k;
- int main()
- {
- f>>m>>n>>lin>>col;
- k=0;
- if(m<n)
- minim=m;
- else
- minim=n;
- if(minim+1>lin+col)
- {
- s=(lin+col-2)*(lin+col-1)/2;
- if((lin+col)%2==1)
- k=s+lin;
- else
- k=s+col;
- }
- else
- if(m+n-minim+1<lin+col)
- {
- p=m+n-lin-col;
- s=m*n-p*(p+1)/2;
- if((lin+col)%2==1)
- k=s-m+lin;
- else
- k=s-n+col;
- }
- else
- {
- s=minim*(minim+1)/2;
- p=col+lin-minim-2;
- s=s+p*minim;
- if(n<m)
- if((lin+col)%2==1)
- k=s+n-col+1;
- else
- k=s+col;
- else
- if((lin+col)%2==1)
- k=s+lin;
- else
- k=s+m-lin+1;
- }
- g<<k;
- f.close();
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement