제출 #1221373

#제출 시각아이디문제언어결과실행 시간메모리
1221373Adeeb_obedoAmusement Park (JOI17_amusement_park)C++20
컴파일 에러
0 ms0 KiB
#include "Joi.h" #include<bits/stdc++.h> #define int long long #define ld double #define _1 first #define _2 second #define yes cout<<"Yes\n" #define nah cout<<"No\n" #define FFF ios_base::sync_with_stdio(0);cin.tie(0); #define ipr pair<int,int> #define ret return #define intt int32_t #define mid ((l+r)/2) #define pb push_back #define lll __int128 using namespace std; int tst, ts; intt mo = 998244353, dx[] = {0, 1, 0, -1}, dy[] = {-1, 0, 1, 0}; int mul( int x, int y ) { ret ( ( x % mo ) * ( y % mo ) ) % mo; ret x*y; } int pwo( int x, int y ) { int res = 1; for( int i = 63; i + 1; i-- ) res = mul( res, res * ( ( 1ll << i )&y ? x : 1 ) ); ret res; } int dvii( int x, int y ) { ret mul( x, pwo( y, mo - 2 ) ); } int oo( char x ) { ret ( int )x - '0'; } int lgg( int x, int y ) { int u = 0; while( x ) { u++; x /= y; } ret u; } int mun( int x, int y ) { while( x < y )x += mo; ret ( x - y ) % mo; } int add( int x, int y ) { ret x + y - ( mo * ( x + y >= mo ) ); ret x + y; } int lcm( int x, int y ) { ret ( x * y ) / __gcd( x, y ); } #define endl '\n'; const int N = 3e4+ 7, N2 = 5e3 + 7, inf = 2e18+7 ; vector<int>v,vt,vv(N,62),g[N],gt[N],ds[N],vi(N),p(N); void dft(int i,int d,int pr){ if(vi[i]) ret; vi[i]=1; if(pr!=-1) g[pr].pb(i); p[i]=pr; ds[d].pb(i); for(auto it:gt[i]){ if(it==pr) continue; dft(it,d+1,i); } } void dfs(int i,int d,int pr){ vv[i]=vt[d]; for(auto it:g[i]) if(it!=pr) dfs(it,d+1,i); } void Joi(intt n,intt M, intt A[], intt B[], int X, intt T){ for(int i=0;i<M;i++) gt[A[i]].pb(B[i]),gt[B[i]].pb(A[i]); dft(0,0,-1); for(int i=0;i<n;i++){ if(ds[i].size()&&i>58) T=1000; if(ds[i].size()==0||v.size()>59) continue; for(auto it:ds[i]){ if(v.size()>59) break; vv[it]=v.size(); v.pb(it); } } if(T==1000){ set<int>ss; for(int i=0;i<n;i++){ for(auto it:ds[i]){ int o=i%60; vv[it]=o; intt u=min(1ll,(1ll<<o)&X); MessageBoard((intt)it,u); ss.insert(it); } } for(int i=0;i<n;i++){ if(!ss.count(i)){ MessageBoard(i,0); } } ret; } for(int i=1;i<n;i++){ if(vv[p[i]]==62||vv[i]!=62) continue; set<int>st; vt.clear(); int o=i; while(o!=0) o=p[o],st.insert(o); for(int i=59;i>=0;i--) if(!st.count(v[i])) vt.pb(i); dfs(i,0,p[i]); } for(intt i=0;i<n;i++){ intt u=i; intt y=min(1ll,X&(1ll<<vv[i])); MessageBoard(u,y); } } //(int
#include "Ioi.h" #include<bits/stdc++.h> #define int long long #define ld double #define _1 first #define _2 second #define yes cout<<"Yes\n" #define nah cout<<"No\n" #define FFF ios_base::sync_with_stdio(0);cin.tie(0); #define ipr pair<int,int> #define ret return #define intt int32_t #define mid ((l+r)/2) #define pb push_back #define lll __int128 using namespace std; int tst, ts; intt mo = 998244353, dx[] = {0, 1, 0, -1}, dy[] = {-1, 0, 1, 0}; int mul( int x, int y ) { ret ( ( x % mo ) * ( y % mo ) ) % mo; ret x*y; } int pwo( int x, int y ) { int res = 1; for( int i = 63; i + 1; i-- ) res = mul( res, res * ( ( 1ll << i )&y ? x : 1 ) ); ret res; } int dvii( int x, int y ) { ret mul( x, pwo( y, mo - 2 ) ); } int oo( char x ) { ret ( int )x - '0'; } int lgg( int x, int y ) { int u = 0; while( x ) { u++; x /= y; } ret u; } int mun( int x, int y ) { while( x < y )x += mo; ret ( x - y ) % mo; } int add( int x, int y ) { ret x + y - ( mo * ( x + y >= mo ) ); ret x + y; } int lcm( int x, int y ) { ret ( x * y ) / __gcd( x, y ); } #define endl '\n'; const int M =1007, N = 3e4+ 7, N2 = 5e3 + 7, inf = 2e18+7 ; vector<int>v,vt,vv(N,62),g[N],gt[N],ds[N],vi(N),p(N),an(N); set<int>s; int uu; void dfa(int i){ s.erase(vv[i]); for(auto it:g[i]){ if(it==p[i]||!s.count(vv[it])||count(v.begin(),v.end(),it)==0) continue; if(uu==i){ uu=it; an[vv[it]]=Move(it); dfa(it); } } if(p[i]!=-1&&uu==i) uu=p[i],Move(p[i]); } void dft(int i,int d,int pr){ if(vi[i]) ret; vi[i]=1; if(pr!=-1) g[pr].pb(i); p[i]=pr; ds[d].pb(i); for(auto it:gt[i]){ if(it==pr) continue; dft(it,d+1,i); } } void dfs(int i,int d,int pr){ vv[i]=vt[d]; for(auto it:g[i]) if(it!=pr) dfs(it,d+1,i); } int Ioi(intt n, intt M, intt A[], intt B[], intt P, intt V, intt T){ set<pair<int, int> > edges; for(int i=0;i<M;i++){ gt[A[i]].pb(B[i]),gt[B[i]].pb(A[i]); edges.insert({ A[i], B[i] }); edges.insert({ B[i], A[i] }); } dft(0,0,-1); for(int i=0;i<n;i++){ if(ds[i].size()&&i>58) T=1000; if(ds[i].size()==0||v.size()>59) continue; for(auto it:ds[i]){ if(v.size()>59) break; vv[it]=v.size(); v.pb(it); } } if(T==1000){ for(int i=0;i<n;i++){ for(auto it:ds[i]){ int o=i%60; vv[it]=o; } } } an[vv[P]]=V; for(int i=0;i<60;i++) s.insert(i); s.erase(vv[P]); if(T==1000){ while(s.size()&&P!=0){ if (!edges.count({ P, p[P] })) { break; } P=p[P]; an[vv[P]]=Move(P); s.erase(vv[P]); } while(s.size()){ if (!edges.count({P,g[P][0]})) { break; } P=g[P][0]; an[vv[P]]=Move(P); s.erase(vv[P]); } int o=0; for(int i=0;i<60;i++) o+=(an[i]*(1ll<<i)); ret o; } for(int i=1;i<n;i++){ if(vv[p[i]]==62||vv[i]!=62) continue; set<int>st; vt.clear(); int o=i; while(o!=0) o=p[o],st.insert(o); for(int i=59;i>=0;i--) if(!st.count(v[i])) vt.pb(i); dfs(i,0,p[i]); } while(P!=0){ if (!edges.count({P,P[p]})) { break; } P=p[P]; an[vv[P]]=Move(P); s.erase(vv[P]); } if(P!=0) cout<<";;"; uu=P; // dfa(P); int o=0; for(int i=0;i<60;i++) o+=(an[i]*(1ll<<i)); ret o; } //(intt)

컴파일 시 표준 에러 (stderr) 메시지

# 2번째 컴파일 단계

Ioi.cpp: In function 'long long int Ioi(int32_t, int32_t, int32_t*, int32_t*, int32_t, int32_t, int32_t)':
Ioi.cpp:166:31: error: no match for 'operator[]' (operand types are 'int32_t' {aka 'int'} and 'std::vector<long long int>')
  166 |          if (!edges.count({P,P[p]})) {
      |                               ^
Ioi.cpp:166:26: error: no matching function for call to 'std::set<std::pair<long long int, long long int> >::count(<brace-enclosed initializer list>)'
  166 |          if (!edges.count({P,P[p]})) {
      |               ~~~~~~~~~~~^~~~~~~~~~
In file included from /usr/include/c++/11/set:61,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:87,
                 from Ioi.cpp:4:
/usr/include/c++/11/bits/stl_set.h:754:9: note: candidate: 'template<class _Kt> decltype (((const std::set<_Key, _Compare, _Alloc>*)this)->std::set<_Key, _Compare, _Alloc>::_M_t._M_count_tr(__x)) std::set<_Key, _Compare, _Alloc>::count(const _Kt&) const [with _Kt = _Kt; _Key = std::pair<long long int, long long int>; _Compare = std::less<std::pair<long long int, long long int> >; _Alloc = std::allocator<std::pair<long long int, long long int> >]'
  754 |         count(const _Kt& __x) const
      |         ^~~~~
/usr/include/c++/11/bits/stl_set.h:754:9: note:   template argument deduction/substitution failed:
Ioi.cpp:166:26: note:   couldn't deduce template parameter '_Kt'
  166 |          if (!edges.count({P,P[p]})) {
      |               ~~~~~~~~~~~^~~~~~~~~~
In file included from /usr/include/c++/11/set:61,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:87,
                 from Ioi.cpp:4:
/usr/include/c++/11/bits/stl_set.h:748:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::size_type std::set<_Key, _Compare, _Alloc>::count(const key_type&) const [with _Key = std::pair<long long int, long long int>; _Compare = std::less<std::pair<long long int, long long int> >; _Alloc = std::allocator<std::pair<long long int, long long int> >; std::set<_Key, _Compare, _Alloc>::size_type = long unsigned int; std::set<_Key, _Compare, _Alloc>::key_type = std::pair<long long int, long long int>]'
  748 |       count(const key_type& __x) const
      |       ^~~~~
/usr/include/c++/11/bits/stl_set.h:748:29: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const key_type&' {aka 'const std::pair<long long int, long long int>&'}
  748 |       count(const key_type& __x) const
      |             ~~~~~~~~~~~~~~~~^~~