Submission #987400

# Submission time Handle Problem Language Result Execution time Memory
987400 2024-05-22T17:02:24 Z yeediot Werewolf (IOI18_werewolf) C++17
Compilation error
0 ms 0 KB
#pragma GCC optimize("O2")
#include<bits/stdc++.h>
#include "werewolf.h"
using namespace std;
#define F first
#define S second
#define all(x) x.begin(),x.end()
#define pii pair<int,int>
#define pb push_back
#define sz(x) (int)(x.size())
#define vi vector<int>
#define why_TOI_is_so_de ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
const int mxn=2e5+5;
int n;
vector<int>adj2[mxn];
struct DSU{
    int to[mxn];
    void init(){
        for(int i=0;i<=n;i++){
            to[i]=i;
        }
    }
    int find(int x){
        return x==to[x]?x:to[x]=find(to[x]);
    }
}d;
struct tree{
    vector<vector<int>>adj,jump;
    int flg, timer, in[mxn], out[mxn], ord[mxn];
    void init(int f){
        adj.resize(n+1);
        flg=f;
        jump.resize(20,vector<int>(n+1));
    }
    void dfs(int v,int pa){
        in[v]=++timer;
        ord[timer]=v;
        jump[0][v]=pa;
        for(auto u:adj[v]){
            if(u!=pa)dfs(u,v);
        }
        out[v]=timer;
    }
    void build(){
        for(int i=1;i<20;i++){
            for(int j=1;j<=n;j++){
                jump[i][j]=jump[i-1][jump[i-1][j]];
            }
        }
    }
    int find(int st,int x){
        if(flg){
            for(int i=19;i>=0;i--){
                if(jump[i][st]<=x){
                    st=jump[i][st];
                }
            }
        }
        else{
            for(int i=19;i>=0;i--){
                if(jump[i][st]>=x){
                    st=jump[i][st];
                }
            }
        }
        return st;
    }
}mn, mx;
vector<int>upd(mxn),ans;
vector<pair<int,int>>in;
int bit[mxn];
void modify(int p){
    for(;p<=n;p+=p&-p){
        bit[p]++;
    }
}
int query(int p){
    int res=0;
    for(;p;p-=p&-p){
        res+=bit[p];
    }
    return res;
}
vi check_validity(int N,vi X,vi Y,vi S,vi E,vi L,vi R){
    why_TOI_is_so_de;
    n=N;
    ans.resize(sz(E));
    for(int i=0;i<sz(X);i++){
        int a=X[i],b=Y[i];
        a++;
        b++;
        adj2[a].pb(b);
        adj2[b].pb(a);
    }
    mn.init(1);
    mx.init(0);
    d.init();
    for(int x=n;x>=1;x--){
        for(auto y:adj2[x]){
            if(y<x)continue;
            int fx=d.find(y),fy=d.find(x);
            if(fx==fy)continue;
            mx.adj[fy].pb(fx);
            d.to[fx]=fy;
        }
    }
    d.init();
    for(int x=1;x<=n;x++){
        for(auto y:adj2[x]){
            if(y>x)continue;
            int fx=d.find(y),fy=d.find(x);
            if(fx==fy)continue;
            mn.adj[fy].pb(fx);
            d.to[fx]=fy;
        }
    }
    mn.dfs(n,n);
    mx.dfs(1,1);
    mn.build();
    mx.build();
    for(int i=1;i<=n;i++){
        upd[i]=mn.in[mx.ord[i]];
    }
    in.resize(n+1);
    for(int i=0;i<sz(S);i++){
        int s=S[i]+1,e=E[i]+1,l=L[i]+1,r=R[i]+1;
        int fs=mx.find(s,l),se=mn.find(e,r);
        S[i]=se;
        in[mx.in[fs]-1].pb({i,-1});
        in[mx.out[fs]].pb({i,1});
    }
    for(int i=1;i<=n;i++){
        modify(upd[i]);
        for(auto [id,flg]:in[i]){
            ans[id]+=flg*(query(mn.out[S[id]])-query(mn.in[S[id]]-1));
            if(flg==1 and ans[id])ans[id]=1;
        }
    }
    return ans;
}

Compilation message

werewolf.cpp: In function 'std::vector<int> check_validity(int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
werewolf.cpp:9:12: error: '__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, int> >, std::pair<int, int> >::value_type' {aka 'struct std::pair<int, int>'} has no member named 'push_back'
    9 | #define pb push_back
      |            ^~~~~~~~~
werewolf.cpp:129:25: note: in expansion of macro 'pb'
  129 |         in[mx.in[fs]-1].pb({i,-1});
      |                         ^~
werewolf.cpp:9:12: error: '__gnu_cxx::__alloc_traits<std::allocator<std::pair<int, int> >, std::pair<int, int> >::value_type' {aka 'struct std::pair<int, int>'} has no member named 'push_back'
    9 | #define pb push_back
      |            ^~~~~~~~~
werewolf.cpp:130:24: note: in expansion of macro 'pb'
  130 |         in[mx.out[fs]].pb({i,1});
      |                        ^~
werewolf.cpp:134:31: error: no matching function for call to 'begin(std::pair<int, int>&)'
  134 |         for(auto [id,flg]:in[i]){
      |                               ^
In file included from /usr/include/c++/10/bits/range_access.h:36,
                 from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from werewolf.cpp:2:
/usr/include/c++/10/initializer_list:90:5: note: candidate: 'template<class _Tp> constexpr const _Tp* std::begin(std::initializer_list<_Tp>)'
   90 |     begin(initializer_list<_Tp> __ils) noexcept
      |     ^~~~~
/usr/include/c++/10/initializer_list:90:5: note:   template argument deduction/substitution failed:
werewolf.cpp:134:31: note:   'std::pair<int, int>' is not derived from 'std::initializer_list<_Tp>'
  134 |         for(auto [id,flg]:in[i]){
      |                               ^
In file included from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from werewolf.cpp:2:
/usr/include/c++/10/bits/range_access.h:51:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(_Container&)'
   51 |     begin(_Container& __cont) -> decltype(__cont.begin())
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:51:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(_Container&) [with _Container = std::pair<int, int>]':
werewolf.cpp:134:31:   required from here
/usr/include/c++/10/bits/range_access.h:51:50: error: 'struct std::pair<int, int>' has no member named 'begin'
   51 |     begin(_Container& __cont) -> decltype(__cont.begin())
      |                                           ~~~~~~~^~~~~
/usr/include/c++/10/bits/range_access.h:61:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(const _Container&)'
   61 |     begin(const _Container& __cont) -> decltype(__cont.begin())
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:61:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(const _Container&) [with _Container = std::pair<int, int>]':
werewolf.cpp:134:31:   required from here
/usr/include/c++/10/bits/range_access.h:61:56: error: 'const struct std::pair<int, int>' has no member named 'begin'
   61 |     begin(const _Container& __cont) -> decltype(__cont.begin())
      |                                                 ~~~~~~~^~~~~
/usr/include/c++/10/bits/range_access.h:90:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> constexpr _Tp* std::begin(_Tp (&)[_Nm])'
   90 |     begin(_Tp (&__arr)[_Nm])
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:90:5: note:   template argument deduction/substitution failed:
werewolf.cpp:134:31: note:   mismatched types '_Tp [_Nm]' and 'std::pair<int, int>'
  134 |         for(auto [id,flg]:in[i]){
      |                               ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from werewolf.cpp:2:
/usr/include/c++/10/valarray:1214:5: note: candidate: 'template<class _Tp> _Tp* std::begin(std::valarray<_Tp>&)'
 1214 |     begin(valarray<_Tp>& __va)
      |     ^~~~~
/usr/include/c++/10/valarray:1214:5: note:   template argument deduction/substitution failed:
werewolf.cpp:134:31: note:   'std::pair<int, int>' is not derived from 'std::valarray<_Tp>'
  134 |         for(auto [id,flg]:in[i]){
      |                               ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from werewolf.cpp:2:
/usr/include/c++/10/valarray:1224:5: note: candidate: 'template<class _Tp> const _Tp* std::begin(const std::valarray<_Tp>&)'
 1224 |     begin(const valarray<_Tp>& __va)
      |     ^~~~~
/usr/include/c++/10/valarray:1224:5: note:   template argument deduction/substitution failed:
werewolf.cpp:134:31: note:   'std::pair<int, int>' is not derived from 'const std::valarray<_Tp>'
  134 |         for(auto [id,flg]:in[i]){
      |                               ^
werewolf.cpp:134:31: error: no matching function for call to 'end(std::pair<int, int>&)'
In file included from /usr/include/c++/10/bits/range_access.h:36,
                 from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from werewolf.cpp:2:
/usr/include/c++/10/initializer_list:101:5: note: candidate: 'template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>)'
  101 |     end(initializer_list<_Tp> __ils) noexcept
      |     ^~~
/usr/include/c++/10/initializer_list:101:5: note:   template argument deduction/substitution failed:
werewolf.cpp:134:31: note:   'std::pair<int, int>' is not derived from 'std::initializer_list<_Tp>'
  134 |         for(auto [id,flg]:in[i]){
      |                               ^
In file included from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from werewolf.cpp:2:
/usr/include/c++/10/bits/range_access.h:71:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.end()) std::end(_Container&)'
   71 |     end(_Container& __cont) -> decltype(__cont.end())
      |     ^~~
/usr/include/c++/10/bits/range_access.h:71:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.end()) std::end(_Container&) [with _Container = std::pair<int, int>]':
werewolf.cpp:134:31:   required from here
/usr/include/c++/10/bits/range_access.h:71:48: error: 'struct std::pair<int, int>' has no member named 'end'
   71 |     end(_Container& __cont) -> decltype(__cont.end())
      |                                         ~~~~~~~^~~
/usr/include/c++/10/bits/range_access.h:81:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.end()) std::end(const _Container&)'
   81 |     end(const _Container& __cont) -> decltype(__cont.end())
      |     ^~~
/usr/include/c++/10/bits/range_access.h:81:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.end()) std::end(const _Container&) [with _Container = std::pair<int, int>]':
werewolf.cpp:134:31:   required from here
/usr/include/c++/10/bits/range_access.h:81:54: error: 'const struct std::pair<int, int>' has no member named 'end'
   81 |     end(const _Container& __cont) -> decltype(__cont.end())
      |                                               ~~~~~~~^~~
/usr/include/c++/10/bits/range_access.h:100:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> constexpr _Tp* std::end(_Tp (&)[_Nm])'
  100 |     end(_Tp (&__arr)[_Nm])
      |     ^~~
/usr/include/c++/10/bits/range_access.h:100:5: note:   template argument deduction/substitution failed:
werewolf.cpp:134:31: note:   mismatched types '_Tp [_Nm]' and 'std::pair<int, int>'
  134 |         for(auto [id,flg]:in[i]){
      |                               ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from werewolf.cpp:2:
/usr/include/c++/10/valarray:1234:5: note: candidate: 'template<class _Tp> _Tp* std::end(std::valarray<_Tp>&)'
 1234 |     end(valarray<_Tp>& __va)
      |     ^~~
/usr/include/c++/10/valarray:1234:5: note:   template argument deduction/substitution failed:
werewolf.cpp:134:31: note:   'std::pair<int, int>' is not derived from 'std::valarray<_Tp>'
  134 |         for(auto [id,flg]:in[i]){
      |                               ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from werewolf.cpp:2:
/usr/include/c++/10/valarray:1244:5: note: candidate: 'template<class _Tp> const _Tp* std::end(const std::valarray<_Tp>&)'
 1244 |     end(const valarray<_Tp>& __va)
      |     ^~~
/usr/include/c++/10/valarray:1244:5: note:   template argument deduction/substitution failed:
werewolf.cpp:134:31: note:   'std::pair<int, int>' is not derived from 'const std::valarray<_Tp>'
  134 |         for(auto [id,flg]:in[i]){
      |                               ^