제출 #163794

#제출 시각아이디문제언어결과실행 시간메모리
163794MvCLongest beautiful sequence (IZhO17_subsequence)C++11
23 / 100
6017 ms12280 KiB
#pragma GCC target("avx2") #pragma GCC optimization("O3") #pragma GCC optimization("unroll-loops") #include <bits/stdc++.h> #define rc(x) return cout<<x<<endl,0 #define pb push_back #define mkp make_pair #define in insert #define er erase #define fd find #define fr first #define sc second typedef long long ll; typedef long double ld; const ll INF=0x3f3f3f3f3f3f3f3f; const ll llinf=(1LL<<62); const int inf=(1<<30); const int nmax=2e6+50; const int mod=1e9+7; using namespace std; int n,i,a[nmax],k[nmax],ls[nmax],mx,j,x,y,t; pair<int,int>f[nmax],g[nmax]; vector<int>rs,vc[25]; int main() { //freopen("sol.in","r",stdin); //freopen("sol.out","w",stdout); //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0); cin>>n; for(i=1;i<=n;i++)cin>>a[i]; for(i=1;i<=n;i++)cin>>k[i]; for(i=1;i<=n;i++)f[i]=mkp(1,i); for(i=1;i<=n;i++) { for(j=0;j<=20;j++)vc[j].clear(); for(j=0;j<(1<<10);j++) { x=__builtin_popcount((j<<10)&a[i]); if(x<=k[i])vc[x].pb(j<<10); if(ls[j<<10] && x==k[i] && g[j<<10].fr>=f[i].fr)f[i]=mkp(g[j<<10].fr+1,g[j<<10].sc); } for(j=0;j<(1<<10);j++) { x=__builtin_popcount(j&a[i]); if(x>k[i])continue; if(ls[j] && x==k[i] && g[j].fr>=f[i].fr)f[i]=mkp(g[j].fr+1,g[j].sc); for(t=0;t<(int)vc[k[i]-x].size();t++) { y=vc[k[i]-x][t]^j; if(ls[y] && g[y].fr>=f[i].fr)f[i]=mkp(g[y].fr+1,g[y].sc); } } if(f[mx].fr<f[i].fr)mx=i; g[a[i]]=max(g[a[i]],mkp(f[i].fr,i)); ls[a[i]]=i; } while(1) { rs.pb(mx); if(f[mx].fr==1)break; mx=f[mx].sc; } reverse(rs.begin(),rs.end()); cout<<(int)rs.size()<<endl; for(i=0;i<(int)rs.size();i++)cout<<rs[i]<<" "; cout<<endl; return 0; }

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

subsequence.cpp:2:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("O3")
 
subsequence.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("unroll-loops")
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...