Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <algorithm>
- #include <vector>
- #include <map>
- #include <stack>
- #include <deque>
- #include <set>
- #include <string>
- #include <limits>
- #include <fstream>
- using namespace std;
- int main(){
- freopen("input.txt", "rt", stdin);
- freopen("output.txt", "wt", stdout);
- int n;
- cin >> n;
- vector < vector <double> > a(n, vector <double> (n, 0));
- for (int i = 0; i < n; i++){
- for (int j = 0; j < n; j++){
- scanf("%lf", &a[i][j]);
- }
- }
- double det = 1;
- for (int i = 0; i < n; i++){
- int row = i;
- int mx = a[i][i];
- for(int k = i+1; k < n; k++){
- if (abs(a[k][i]) > mx){
- row = k;
- mx = abs(a[k][i]);
- }
- }
- if (row != i) {
- det *= -1;
- swap(a[row], a[i]);
- }
- for (int j = i+1; j < n; j++){
- double e = a[j][i]/a[i][i];
- for (int k = i; k < n; k++){
- a[j][k] -= e*a[i][k];
- }
- }
- }
- for (int i = 0; i < n; i++)
- det *= a[i][i];
- printf("%.15lf", det);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement