Submission #231241

#TimeUsernameProblemLanguageResultExecution timeMemory
231241mohamedsobhi777Mountains (IOI17_mountains)C++14
20 / 100
169 ms384 KiB
/*
        Pure bruteforce
*/
#include "mountains.h"
#include <bits/stdc++.h>

using namespace std ; 

int maximum_deevs(std::vector<int> y) {
        int ret = 0 ; 
        int n = y.size() ; 
        bool gd[n+1][n+1] ; 
        memset(gd , 0 , sizeof gd) ; 
        
        for(int i = 0 ; i < n ;i++){
                for(int j = i+1 ; j< n;j++){
                        for(int k = i+1 ; k < j ;k++){

                                double slp = 1.0 *  (y[i] - y[j]) /( i - j) ;  
                                double o = -1 ; 
                                double c = y[i] - slp * i ; 
                                if(k * slp + y[k] * o + c < 0){
                                        gd[i][j] = gd[j][i] = 1; 
                                }
                                else gd[i][j] = gd[j][i] = 0 ; 
                                                           
                        }
                }
        }

        for(int i = 1 ; i < (1<<n) ; i++){
                vector<pair<int , int> > prs ; 
                for(int j = 0 ;j < n ;j++){
                        if(i &(1<<j)){
                                prs.push_back({j , y[j]}) ; 
                        }
                }
                if(prs.size() < ret) continue ; 
                bool okk = 1 ; 
                for(int j = 0 ; j < prs.size() ; j++){
                        for(int k = j +1 ; k < prs.size() && k < j+2; k++){
                                bool ok = gd[prs[j].first][prs[k].first] ; 
                                if(!ok){
                                        okk = 0 ;
                                        j = prs.size() ;  
                                        break ; 
                                }
                        }
                }
                if(okk){
                        ret = max(ret , (int) prs.size()) ; 
                }
        }

	return ret;
}

Compilation message (stderr)

mountains.cpp: In function 'int maximum_deevs(std::vector<int>)':
mountains.cpp:38:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 if(prs.size() < ret) continue ; 
                    ~~~~~~~~~~~^~~~~
mountains.cpp:40:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 for(int j = 0 ; j < prs.size() ; j++){
                                 ~~^~~~~~~~~~~~
mountains.cpp:41:46: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                         for(int k = j +1 ; k < prs.size() && k < j+2; k++){
                                            ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...