Advertisement
Patrickmeme

Pasari-stare debug

Mar 5th, 2023
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.09 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3.  
  4. ifstream cin("pasari.in");
  5. ofstream cout("pasari.out");
  6.  
  7. #define MAX_LAT 1000
  8. int v[MAX_LAT][MAX_LAT],frv[MAX_LAT][MAX_LAT];
  9. int st[MAX_LAT][MAX_LAT],dr[MAX_LAT][MAX_LAT];
  10. int sus[MAX_LAT][MAX_LAT],jos[MAX_LAT][MAX_LAT];
  11. int grid[MAX_LAT];
  12.  
  13. void cons(int lin,int n){
  14.     int poz,col;
  15.     st[lin][0]=0;
  16.     poz=1;
  17.     grid[0]=0;
  18.     for(col=1;col<n;col++){
  19.         if(v[lin][grid[poz-1]]>v[lin][col]){
  20.             st[lin][col]=grid[poz-1];
  21.             grid[poz]=col;
  22.             poz++;
  23.         }else{
  24.             while(poz>0 && v[lin][grid[poz-1]]<v[lin][col]){
  25.                 poz--;
  26.             }
  27.             if(poz==0)
  28.                 st[lin][col]=0;
  29.             else
  30.                 st[lin][col]=grid[poz-1];
  31.             grid[poz]=col;
  32.             poz++;
  33.         }
  34.     }
  35. }
  36. void cond(int lin,int n){
  37.     int poz,col;
  38.     dr[lin][n-1]=0;
  39.     poz=1;
  40.     grid[n-1]=n-1;
  41.     for(col=n-2;col>=0;col--){
  42.         if(v[lin][grid[poz-1]]>v[lin][col]){
  43.             dr[lin][col]=grid[poz-1];
  44.             grid[poz]=col;
  45.             poz++;
  46.         }else{
  47.             while(poz>0 && v[lin][grid[poz-1]]<v[lin][col]){
  48.                 poz--;
  49.             }
  50.             if(poz==0)
  51.                 dr[lin][col]=0;
  52.             else
  53.                 dr[lin][col]=grid[poz-1];
  54.             grid[poz]=col;
  55.             poz++;
  56.         }
  57.     }
  58. }
  59. void conjos(int col,int n){
  60.     int poz,lin;
  61.     jos[n-1][col]=0;
  62.     poz=1;
  63.     grid[n-1]=n-1;
  64.     for(lin=n-2;lin>=0;lin--){
  65.         if(v[lin][grid[poz-1]]>v[lin][col]){
  66.             jos[lin][col]=grid[poz-1];
  67.             grid[poz]=lin;
  68.             poz++;
  69.         }else{
  70.             while(poz>0 && v[grid[poz-1]][col]<v[lin][col]){
  71.                 poz--;
  72.             }
  73.             if(poz==0)
  74.                 jos[lin][col]=0;
  75.             else
  76.                 jos[lin][col]=grid[poz-1];
  77.             grid[poz]=lin;
  78.             poz++;
  79.         }
  80.     }
  81. }
  82. void consus(int col,int n){
  83.     int poz,lin;
  84.     sus[0][col]=0;
  85.     poz=1;
  86.     grid[0]=0;
  87.     for(lin=1;lin<n;lin++){
  88.         if(v[lin][grid[poz-1]]>v[lin][col]){
  89.             sus[lin][col]=grid[poz-1];
  90.             grid[poz]=lin;
  91.             poz++;
  92.         }else{
  93.             while(poz>0 && v[grid[poz-1]][col]<v[lin][col]){
  94.                 poz--;
  95.             }
  96.             if(poz==0)
  97.                 sus[lin][col]=0;
  98.             else
  99.                 sus[lin][col]=grid[poz-1];
  100.             grid[poz]=lin;
  101.             poz++;
  102.         }
  103.     }
  104. }
  105. int main()
  106. {
  107.     int cer,n,i,lin,col,max1,ccol,s;
  108.     cin>>cer>>n;
  109.     for(lin=0;lin<n;lin++)
  110.         for(col=0;col<n;col++)
  111.             cin>>v[lin][col];
  112.     for(i=0;i<n;i++){
  113.             consus(i,n);
  114.             conjos(i,n);
  115.             cons(i,n);
  116.             cond(i,n);
  117.     }
  118.     if(cer==1){
  119.         cin>>lin;
  120.         max1=ccol=0;
  121.         for(col=0;col<n;col++){
  122.             s=dr[lin][col]-st[lin][col]+jos[lin][col]-sus[lin][col]+1;
  123.             if(s>max1){
  124.                 max1=s;
  125.                 ccol=col+1;
  126.             }
  127.         }
  128.         cout<<ccol;
  129.     }
  130.     return 0;
  131. }
  132.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement