Submission #387071

#TimeUsernameProblemLanguageResultExecution timeMemory
387071achibasadzishviliFish (IOI08_fish)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> #define ll int #define f first #define s second #define pb push_back #define mp make_pair using namespace std; ll ans; ll n,k,mod,in[500005],s[1500005],pown=1,m[500005]; vector<ll>v[500005],t[500005]; void change(ll x){ x = pown + x; s[x]++; s[x] %= mod; x /= 2; while(x){ s[x] = s[2 * x] * s[2 * x + 1] % mod; x /= 2; } } ll get(ll x,ll L,ll R,ll l,ll r){ if(L > r || R < l)return 1; if(L >= l && R <= r)return s[x]; ll k1 = get(2 * x , L , (L + R) / 2 , l , r); ll k2 = get(2 * x + 1 , (L + R) / 2 + 1 , R , l , r); return k1 * k2 % mod; } int main(){ ios::sync_with_stdio(false); cin >> n >> k >> mod; while(pown <= k + 2) pown *= 2; ll x,y; for(int i=1; i<=n; i++){ cin >> x >> y; v[y].pb(x); } vector<pair<ll,ll> >g; for(int i=1; i<=k; i++){ sort(v[i].begin() , v[i].end()); if(v[i].size()){ g.pb(mp(v[i][v[i].size() - 1] , i)); } } for(int i=0; i<k; i++){ change(i); } sort(g.begin() , g.end()); for(int i=0; i<g.size(); i++){ t[i] = v[g[i].s]; } set<pair<ll,ll> >st; for(int i=0; i<k; i++){ v[i] = t[i]; st.insert(mp(v[i][0] , i)); m[i] = v[i][(int)v[i].size() - 1]; } ll l,r,mid,ind; par<ll,ll>p; for(int i=0; i<k; i++){ if(v[i].size() == 0)continue; while(st.size() && (*st.begin()).f * 2 <= m[i]){ p = (*st.begin()); change(p.s); in[p.s]++; st.erase(st.begin()); if(in[p.s] != v[p.s].size()){ st.insert(mp(v[p.s][in[p.s]] , p.s)); } } l = i + 1,r = k - 1,mid,ind = k; while(r >= l){ mid = (l + r) / 2; if(m[mid] >= 2 * v[i][in[i]]){ r = mid - 1; ind = mid; } else { l = mid + 1; } } ind--; ans = (ans + get(1 , 1 , pown , 1 , i) * get(1 , 1 , pown , i + 2 , ind + 1)) % mod; ans = (ans + in[i] % mod * get(1 , 1 , pown , 1 , i)) % mod; } cout << ans << '\n'; return 0; }

Compilation message (stderr)

fish.cpp: In function 'int main()':
fish.cpp:51:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |     for(int i=0; i<g.size(); i++){
      |                  ~^~~~~~~~~
fish.cpp:61:5: error: 'par' was not declared in this scope; did you mean '__pstl::execution::v1::par'?
   61 |     par<ll,ll>p;
      |     ^~~
      |     __pstl::execution::v1::par
In file included from /usr/include/c++/9/pstl/glue_algorithm_defs.h:15,
                 from /usr/include/c++/9/algorithm:71,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fish.cpp:1:
/usr/include/c++/9/pstl/execution_defs.h:114:27: note: '__pstl::execution::v1::par' declared here
  114 | constexpr parallel_policy par{};
      |                           ^~~
fish.cpp:2:12: error: expected primary-expression before 'int'
    2 | #define ll int
      |            ^~~
fish.cpp:61:9: note: in expansion of macro 'll'
   61 |     par<ll,ll>p;
      |         ^~
fish.cpp:65:13: error: 'p' was not declared in this scope
   65 |             p = (*st.begin());
      |             ^
fish.cpp:74:39: warning: right operand of comma operator has no effect [-Wunused-value]
   74 |         l = i + 1,r = k - 1,mid,ind = k;
      |                                       ^