제출 #1106918

#제출 시각아이디문제언어결과실행 시간메모리
1106918vjudge1Sirni (COCI17_sirni)C++17
140 / 140
4601 ms475440 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long const ll mod=1e9+7; #define fi first #define se second int n,u,minn[10000005],pa[10000005]; vector<int> vec; vector<pair<int,pair<int,int>>> krk; ll ketqua; int find_pa(int u) { if (pa[u]==u) return u; return pa[u]=find_pa(pa[u]); } void Merge(int u,int v,int x) { u=find_pa(u); v=find_pa(v); if (u==v) return; ketqua+=x; pa[u]=v; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n; for (int i=1;i<=n;++i) { cin>>u; pa[u]=u; vec.push_back(u); } sort(vec.begin(),vec.end()); vec.erase(unique(begin(vec),end(vec)),end(vec)); for (int i=0;i<=10000001;++i) minn[i]=-1; for (int i=vec.size()-1;i>=1;--i) { for (int j=vec[i];j>vec[i-1];--j) minn[j]=vec[i]; } for (int i=0;i<=vec[0];++i) minn[i]=vec[0]; for (int i=0;i<vec.size();++i) { if (vec[i]==0) continue; int hao=vec[i]; for (int j=hao;j<=10000000;j+=hao) { if (j==hao) { if (minn[j+1]==-1 || minn[j+1]>j+hao) continue; krk.push_back({min(hao%minn[j+1],minn[j+1]%hao),{hao,minn[j+1]}}); } else { if (minn[j]==-1 || minn[j]>j+hao) continue; krk.push_back({min(hao%minn[j],minn[j]%hao),{hao,minn[j]}}); } } } sort(krk.begin(),krk.end()); for (int i=0;i<krk.size();++i) { Merge(krk[i].se.fi,krk[i].se.se,krk[i].fi); //cout<<krk[i].se.fi<<" "<<krk[i].se.se<<" "<<krk[i].fi<<'\n'; } cout<<ketqua; }

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

sirni.cpp: In function 'int main()':
sirni.cpp:43:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |     for (int i=0;i<vec.size();++i)
      |                  ~^~~~~~~~~~~
sirni.cpp:62:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, std::pair<int, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |     for (int i=0;i<krk.size();++i)
      |                  ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...