Submission #1298928

#TimeUsernameProblemLanguageResultExecution timeMemory
1298928ender_shayanCutting a Rectangle (BOI24_rectangle)C++20
0 / 100
136 ms235272 KiB
#include <bits/stdc++.h> using namespace std; // #include <ext/pb_ds/assoc_container.hpp> // #include <ext/pb_ds/tree_policy.hpp> // using namespace __gnu_pbds; typedef long long ll; typedef long double ld; typedef pair<int, int> pii ; typedef pair<ll, ll> pll ; typedef vector<pii> vii ; typedef vector<int> veci ; typedef vector<pll> vll ; typedef vector<ll> vecll; // find_by_order order_of_key //#pragma GCC optimize("O3,unroll-loops") //#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> #define F first #define S second #define pb push_back #define endl '\n' #define Mp make_pair #define all(x) x.begin(), x.end() #define debug(x) cerr << #x << " = " << x << endl #define set_dec(x) cout << fixed << setprecision(x); #define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define file_io freopen("in.txt" , "r" , stdin) ; freopen("out.txt" , "w" , stdout); #define lb lower_bound #define ub upper_bound #define for1(n) for(int i=1;i<=n;i++) #define for0(n) for(int i=0;i<n;i++) #define forn(n) for(int i=n;i>0;i--) #define pq priority_queue <pii, vector<pii>, greater<pii>> const ll mod = 1e9+7 ;// 998244353 ;// 1e9+9; ll inf=1e18; const int N=5e6+10,L=21,bs=701,NN=1e6; int A[N],B[N],D[N],E[N],n,m,k,q,dp[N],pre[N],dist[N],vis[N]; vector<int>g[N]; multiset<int>C[N]; bool solve(ll a,ll b){ if(min(a,b)==0)return 1; if(a>=N || C[a].size()==0)return 0; cout<<a<<" "<<b<<endl; vector<int>vec; for(int t:C[a]){ if(t!=a)C[t].erase(C[t].find(a)); vec.pb(t); b-=t; } C[a].clear(); bool o=solve(b,a); for(int x:vec){ if(x!=a) C[x].insert(a); C[a].insert(x); } return o; } int main(){ fast_io cin>>n; vector<int>vec; ll sum=0;int mn=0; for1(n){ int x,y;cin>>x>>y; C[x].insert(y); if(x!=y) C[y].insert(x); sum+=1ll*x*y; vec.pb(x);vec.pb(y); mn=max(mn,min(x,y)); } sort(all(vec));vec.resize(unique(all(vec))-vec.begin()); vector<int>ans; for(int x:vec){ if(x>=mn && sum%x==0){ solve(x,sum/x); ans.pb(min(ll(x),sum/x)); } } sort(all(ans));ans.resize(unique(all(ans))-ans.begin()); cout<<ans.size()<<endl; for(int x:ans)cout<<x<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...