CSES - Datatähti 2023 alku - Results
Submission details
Task:Ruudukko
Sender:stpn129
Submission time:2022-11-13 18:09:31 +0200
Language:C++ (C++17)
Status:COMPILE ERROR

Compiler report

In file included from /usr/include/c++/11/ext/pb_ds/detail/type_utils.hpp:47,
                 from /usr/include/c++/11/ext/pb_ds/tag_and_trait.hpp:46,
                 from /usr/include/c++/11/ext/pb_ds/assoc_container.hpp:46,
                 from input/code.cpp:3:
/usr/include/c++/11/tr1/type_traits:121:3: error: redefinition of 'struct std::tr1::__is_integral_helper<long long int>'
  121 |   _DEFINE_SPEC(0, __is_integral_helper, long long, true)
      |   ^
/usr/include/c++/11/tr1/type_traits:117:3: note: previous definition of 'struct std::tr1::__is_integral_helper<long long int>'
  117 |   _DEFINE_SPEC(0, __is_integral_helper, int, true)
      |   ^
/usr/include/c++/11/tr1/type_traits:122:3: error: redefinition of 'struct std::tr1::__is_integral_helper<long long unsigned int>'
  122 |   _DEFINE_SPEC(0, __is_integral_helper, unsigned long long, true)
      |   ^
/usr/include/c++/11/tr1/type_traits:118:3: note: previous definition of 'struct std::tr1::__is_integral_helper<long long...

Code

#include <bits/stdc++.h>
#define int long long
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
using namespace std;
 
 
void init_code() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
#ifndef ONLINE_JUDGE
 
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif
} 
 
const int mod = 1e9+ 7;
 
void solve() {
  int n;
  cin >> n;

  int x;
  gp_hash_table<int, vector<pair<int, int>> > mp;
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      cin >> x;
      mp[x].push_back({i, j});
    }
  }
 
  int res = 0;
 
  map<int, int> isums;
  map<int, int> jsums;
 
  for (auto x : mp) {
    map<int, int> iadds, jadds;
    for (auto k : x.second) {
      int i = k.first; int j = k.second;
      int val = (isums[i] + jsums[j] + 1) % mod;
      res = (res + val) % mod;
      iadds[i] = (iadds[i] + val) ;
      jadds[j] = (jadds[j] + val) ;
    }
    for (auto i: iadds) {
      isums[i.first] = (isums[i.first] + i.second);
    }
 
    for (auto j: jadds) {
      jsums[j.first] = (jsums[j.first] + j.second);
    }
  }
  cout << res << '\n';
}
 
signed main() {
  init_code();
  int t = 1;
  while (t--) {
    solve();  
  }
  return 0;
}