Submission #370749

#TimeUsernameProblemLanguageResultExecution timeMemory
370749Atill83Sirni (COCI17_sirni)C++14
0 / 140
249 ms275444 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define endl '\n' using namespace std; const long long INF = (long long) 1e18; const int mod = (int) 1e9+7; const int MAXN = (int) 3e5+5; const int MAXM = (int) 1e7+5; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; typedef pair<ll,ll> pll; ll n; int p[MAXN]; int buy[MAXM]; vector<pii> edg[MAXM]; int par[MAXN]; int sz[MAXN]; int find_set(int p){ if(par[p] == p) return p; return par[p] = find_set(par[p]); } int merge(int a, int b){ if(sz[b] > sz[a]) swap(a, b); par[b] = a; sz[a] += sz[b]; } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr);cout.tie(nullptr); #ifdef Local freopen("C:/Users/Admin/Desktop/Yazilim/C/IO/int.txt","r",stdin); freopen("C:/Users/Admin/Desktop/Yazilim/C/IO/out.txt","w",stdout); #endif /*cout<<"100000"<<endl; for(int i = 2; i < 1e7; i+=100) cout<<i<<" "; return 0; */ cin>>n; memset(buy, -1, sizeof(buy)); for(int i = 0; i < n; i++){ cin>>p[i]; if(p[i] == 1){ cout<<0<<endl; return 0; } } sort(p, p + n); n = (unique(p, p + n) - p); for(int i = 0; i < n; i++){ buy[p[i]] = i; par[i] = i; sz[i] = 1; } for(int i = MAXM - 1; i > 0; i--){ if(buy[i - 1] == -1) buy[i - 1] = buy[i]; } return 0; for(int i = 0; i < n; i++){ int fir = buy[p[i] + 1]; if(fir != -1 && p[fir] < 2*p[i]){ assert(p[fir] - p[i] >= 0); edg[p[fir] - p[i]].push_back({i, fir}); } for(int j = 2*p[i]; j < MAXM; j += p[i]) if(buy[j] != -1 && p[buy[j]] < j + p[i]){ assert(p[buy[j]] - j >= 0); edg[p[buy[j]] - j].push_back({i, buy[j]}); } } ll ans = 0; for(int i = 0; i < MAXM; i++){ for(int j = 0; j < edg[i].size(); j++){ pii u = edg[i][j]; int a = find_set(u.ff), b = find_set(u.ss); if(a != b){ ans += i; merge(a, b); } } } assert(sz[find_set(0)] == n); cout<<ans<<endl; #ifdef Local cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds "; #endif }

Compilation message (stderr)

sirni.cpp: In function 'int merge(int, int)':
sirni.cpp:33:1: warning: no return statement in function returning non-void [-Wreturn-type]
   33 | }
      | ^
sirni.cpp: In function 'int main()':
sirni.cpp:90:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   90 |         for(int j = 0; j < edg[i].size(); j++){
      |                        ~~^~~~~~~~~~~~~~~
#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...