Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma GCC optimize ("Ofast,unroll-loops")
- #pragma GCC target ("avx2,fma")
- #include<bits/stdc++.h>
- #include <Windows.h>
- using namespace std;
- //rope
- #define forx(i,a,b) for (int i = a; i < b; i++)
- #define INF int(1e9)
- #define all(x2) begin(x2),end(x2)
- #define isz(t) ((int)(t.size()))
- #define last(x) (*(x.end()-1))
- #define mod int(1e9+7)
- #define ft first
- #define sd second
- #define pr pair
- #define sh(x) false //cerr<<#x<<" = "<<x<<'\n'
- //#define debug
- using ll= long long;//
- using ld= long double;
- using ull=unsigned long long;
- using ii = pair<ll, ll>;
- string to_string(string s){
- return s;
- }
- template<typename T>
- ostream& print_range(ostream& os,T begin,T end){
- for(auto it=begin;it!=end;++it)
- os<<*it<<' ';
- os<<'\n';
- return os;
- }
- template<typename ...T>
- ostream& operator<<(ostream& os,const vector<T...>&v){
- return print_range(os,v.begin(),v.end());
- }
- template<typename ...Args>
- void show(Args&&... args) {
- (std::cerr << ... <<( to_string(args)+" ")) << '\n';
- }
- template<typename ...Args>
- void printer(Args&&... args) {
- (std::cout << ... <<( to_string(args)+" ")) << '\n';
- }
- template<typename T, typename... Args>
- void push_back_vec(std::vector<T>& v, Args&&... args)
- {
- (v.push_back(std::forward<Args>(args)), ...);
- }
- template<class ...Args>
- void input(Args&... args) {
- (cin>>...>>args);
- }
- template<typename T>
- T minimum(T x) {
- return x;
- }
- template<typename T, typename... Pack>
- auto minimum(T x, Pack... p) {
- using common = typename std::common_type<T, Pack...>::type;
- return std::min((common)x, (common)minimum(p...));
- }
- template<typename T>
- T maximum(T x) {
- return x;
- }
- template<typename T, typename... Pack>
- auto maximum(T x, Pack... p) {
- using common = typename std::common_type<T, Pack...>::type;
- return std::max((common)x, (common)maximum(p...));
- }
- vector<vector<double>>g(10,vector<double>(10,-1));
- vector<int>us(10,-1);
- void dfs(int x,int k=1){
- // printer(x,k);
- us[x]=max(us[x],k);
- forx(i,0,10){
- if(g[x][i]==-1)
- continue;
- dfs(i,k+1);
- }
- }
- void solution() {
- vector<int>p(5);
- forx(i,0,5)
- cin>>p[i];
- vector<int>w(5);
- forx(i,0,5)
- cin>>w[i];
- vector<vector<int>>v(10,vector<int>(5,0));
- forx(i,0,10)
- forx(j,0,5)
- cin>>v[i][j];
- forx(i,0,10){
- forx(j,0,10){
- if(i==j)
- continue;
- int a=0,b=0;
- string s,u;
- forx(k,0,5) {
- if(v[i][k]>v[j][k] && p[k]==1 || v[i][k]<v[j][k] && p[k]==0){
- a+=w[k];
- s+=" + "+to_string(w[k]);
- u+=" + 0";
- }
- if(v[i][k]<v[j][k] && p[k]==1 || v[i][k]>v[j][k] && p[k]==0) {
- b += w[k];
- u+=" + "+to_string(w[k]);
- s+=" + 0";
- }
- if(v[i][k]==v[j][k]){
- u+=" + 0";
- s+=" + 0";
- }
- }
- s.erase(0,3);
- u.erase(0,3);
- string d=to_string(i+1),f=to_string(j+1);
- cout<<"Рассмотрим проекты "+d+" и "+f+"(i="+d+", "+"j="+f+"):\n";
- cout<<"P"+d+f+" = "+s+" = "+to_string(a)+"\n";
- cout<<"N"+d+f+" = "+s+" = "+to_string(b)+"\n";
- cout<<"D"+d+f+" = "+to_string(a)+"/"+to_string(b)+" = ";
- if(b==0){
- cout<<"inf - принимаем\n";
- g[i][j]=mod;
- }
- else{
- double q=a*1./b;
- cout<<to_string(q);
- if(q<1)
- cout<<" < 1 - отбрасываем\n";
- else{
- g[i][j]=q;
- cout<<" - принимаем\n";
- }
- }
- }
- }
- forx(i,0,10)
- forx(j,0,10)
- if(g[i][j]<1.7 || g[i][j]==mod)
- g[i][j]=-1;
- forx(i,0,10){
- cout<<i+1<<"\t";
- for(double& j:g[i])
- cout<<j<<"\t";
- printer();
- }
- forx(i,0,10){
- dfs(i);
- }
- forx(i,0,10){
- if(find(all(us),i+1)!=us.end())
- cout<<"\n"<<i+1<<")";
- forx(j,0,10)
- if(us[j]==i+1)
- cout<<"\t"<<j+1;
- }
- }
- int32_t main() {
- SetConsoleCP(65001);
- SetConsoleOutputCP(65001);
- ios::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- // cout.setf(ios::fixed);
- // cout.precision(6);
- // freopen("input.txt", "r", stdin);
- // freopen("output.txt", "w", stdout);
- solution();
- }
Advertisement
Add Comment
Please, Sign In to add comment