Submission #845586

#TimeUsernameProblemLanguageResultExecution timeMemory
845586vjudge1Konstrukcija (COCI20_konstrukcija)C++17
15 / 110
0 ms344 KiB
#include <bits/stdc++.h> #define endl "\n" #define pb push_back #define int long long using namespace std; const int inf = 2e18 + 5; const int N = 5e3 + 5; const int mod = 998244353; int fpow(int a, int b){ if(b == 0) return 1; int p = 1; while(b){ if(b&1) p = p*a; b = b/2; a = a*a; } return p; } int32_t main(){ //freopen("in.txt","r", stdin); int k; cin>>k; if(k == 1){ cout<<1<<" "<<0<<endl; return 0; } if(k == 0){ cout<<2<<" "<<0<<endl; return 0; } int nnode = 1; vector<pair<int, int> > adj; vector<int> waitlist; int ak = abs(k); if(k > 0){ ak++; while(ak--){ if(k > 0){ nnode++; adj.pb({1, nnode}); waitlist.pb(nnode); } } cout<<nnode+1<<" "<<adj.size() + waitlist.size()<<endl; for(auto itr: adj){ cout<<itr.first<<" "<<itr.second<<endl; } for(auto itr: waitlist){ cout<<itr<<" "<<nnode+1<<endl; } } else{ map<int, int> mp; int x = (ak+3)/2; while(x--){ adj.pb({1, nnode+1}); mp[nnode+1] = 1; adj.pb({nnode+1, nnode+2}); waitlist.pb(nnode+2); nnode += 2; } ak += 2; for(int i = 2; i < nnode; i += 2){ for(auto itr: waitlist){ if(itr == i+1) continue; adj.pb({i, itr}); ak--; if(ak == 0) break; } if(ak == 0) break; } cout<<nnode+1<<" "<<adj.size() + waitlist.size()<<endl; for(auto itr: adj){ cout<<itr.first<<" "<<itr.second<<endl; } for(auto itr: waitlist){ cout<<itr<<" "<<nnode+1<<endl; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...