Advertisement
konchin_shih

code

May 23rd, 2021
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. #include<fstream>
  2. #include<sstream>
  3. #include<iomanip>
  4. #include<iostream>
  5. #include<array>
  6. #include<map>
  7. #include<vector>
  8. #include<algorithm>
  9. using namespace std;
  10.  
  11. //size constant
  12.  
  13. constexpr int x_size = 686, y_size = 460, k = 2;
  14. constexpr int fixed_x_size = x_size/k, fixed_y_size = y_size/k;
  15.  
  16. template<typename T> using V=vector<T>;
  17.  
  18.  
  19. int main(){
  20.     cout<<"poop"<<endl;
  21.  
  22.     fstream fin("input.txt", ios::in);
  23.     fstream fout("output.txt", ios::out);
  24.  
  25.     string str,res;
  26.     getline(fin,str);
  27.     while(getline(fin,str)){
  28.         str.resize(remove_if(str.begin(),str.end(),[](char x){
  29.             return !isdigit(x) and !isspace(x);
  30.         })-str.begin());
  31.         res+=str;
  32.     }
  33. //    fout<<res<<endl;
  34.     stringstream ss(res);
  35.     V<V<double>> arr(x_size,V<double>(y_size));
  36.    
  37.     for(int i=0;i!=x_size;i++)
  38.         for(int j=0;j!=y_size;j++)
  39.             ss>>arr[i][j];
  40.  
  41.     // cout<<"debug 1"<<endl;
  42.     V<V<double>> fixed_arr(fixed_x_size,V<double>(fixed_y_size));
  43.  
  44.     // cout<<"debug 2"<<endl;
  45.     for(int i=0;i!=fixed_x_size*k;i++)
  46.         for(int j=0;j!=fixed_y_size*k;j++)
  47.             fixed_arr[i/k][j/k]+=arr[i][j];
  48.  
  49.     // cout<<"debug 3"<<endl;
  50.     for(auto& i:fixed_arr)
  51.         for(auto& j:i)
  52.             j/=k*k;
  53.  
  54.     map<double,long long> m;
  55.  
  56.  
  57.     // cout<<"debug 4"<<endl;
  58.     for(const auto& i:fixed_arr)
  59.         for(const auto& j:i)
  60.             m[j]++;
  61.     using node=pair<double,long long>;
  62.     vector<node> v;
  63.  
  64.     for(auto i=m.rbegin();i!=m.rend();i++)
  65.         v.emplace_back(i->first,i->second);
  66.  
  67.     sort(v.begin(),v.end(),[](node a,node b){
  68.         return a.second>b.second||(a.second==b.second&&a.first<b.first);
  69.     });
  70.  
  71.     for(const auto& i:v)
  72.         fout<<i.first<<", "<<i.second<<endl;
  73.  
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement