제출 #662125

#제출 시각아이디문제언어결과실행 시간메모리
662125victor_gaoMonster Game (JOI21_monster)C++17
0 / 100
56 ms316 KiB
//#pragma GCC optimize("Ofast,unroll-loops,O3") //#pragma GCC optimize("avx,avx2,sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,fma,tune=native") #include "monster.h" #include<bits/stdc++.h> #define pii pair<int,int> #define x first #define y second using namespace std; vector<int> Merge(vector<int>now){ if (now.size()<=1) return now; int n=now.size(); int mid=(n-1)/2; vector<int>l,r; for (int i=0;i<=mid;i++) l.push_back(now[i]); for (int i=mid+1;i<n;i++) r.push_back(now[i]); vector<int>al=Merge(l); vector<int>ar=Merge(r); vector<int>ans; int p=0; for (int i=0;i<al.size();i++){ if (p<ar.size()){ if (Query(al[i],ar[p])){ ans.push_back(ar[p]); p++; i--; } else ans.push_back(al[i]); } else ans.push_back(al[i]); } while (p<ar.size()){ ans.push_back(ar[p]); p++; } return ans; } vector<int> Solve1(vector<int>vt){ map<pii,vector<int> >mp; vector<int>ans; int cnt[10]={0},N=vt.size(); ans.resize(N,0); for (int i=0;i<N;i++){ for (int j=i+1;j<N;j++){ if (Query(vt[i],vt[j])) cnt[i]++; else cnt[j]++; } } for (int i=0;i<N;i++) mp[{cnt[i],N-1-cnt[i]}].push_back(i); for (auto i:mp){ if (i.y.size()==1){ ans[i.x.x]=vt[i.y[0]]; } else { int a=vt[i.y[0]],b=vt[i.y[1]]; if (Query(a,b)){ if (i.x.x<N/2){ ans[i.x.x-1]=a; ans[i.x.x]=b; } else { ans[i.x.x]=a; ans[i.x.x+1]=b; } } else { if (i.x.x<N/2){ ans[i.x.x-1]=b; ans[i.x.x]=a; } else { ans[i.x.x]=b; ans[i.x.x+1]=a; } } } } return ans; } vector<int> Solve(int N){ vector<int>now; for (int i=0;i<N;i++) now.push_back(i); vector<int>ans=Merge(now); for (int i=0;i<N;i++){ vector<int>out; for (int j=i;j<N&&(j-i<=4);j++) out.push_back(ans[j]); if (out.size()<=3) break; out=Solve1(out); for (int j=i;j<N&&(j-i<=4);j++) ans[j]=out[j-i]; } vector<int>tans; tans.resize(N,0); for (int i=0;i<N;i++) tans[ans[i]]=i; return tans; }

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

monster.cpp: In function 'std::vector<int> Merge(std::vector<int>)':
monster.cpp:23:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |   for (int i=0;i<al.size();i++){
      |                ~^~~~~~~~~~
monster.cpp:24:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |     if (p<ar.size()){
      |         ~^~~~~~~~~~
monster.cpp:33:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |   while (p<ar.size()){
      |          ~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...