Submission #128318

#TimeUsernameProblemLanguageResultExecution timeMemory
128318OptxPrimeMinerals (JOI19_minerals)C++14
90 / 100
74 ms3780 KiB
#include <iostream> #include <cmath> #include<vector> #include <algorithm> #include <utility> #include<stack> #include<queue> #include<map> #include <fstream> #include <minerals.h> using namespace std; #define pb push_back #define mp make_pair #define ll long long #define ans Answer #define query Query bool inside[100010]; int memo[100010]; int nn; int curr,opencurr,tmp; void conquer( vector<int> l, vector<int> r ) { int sz = l.size()/2; if( l.size()==1 ){ ans( l[0], r[0] ); return; } vector<int> l1, l2; l1.clear(); l2.clear(); int cnt=0; for( int i=0;i<sz;i++ ){ l1.pb( l[i] ); if( !inside[ l[i] ] ){ /// mora biti unutra cnt= query( l[i] ); ///update cnt kad ubacimo inside[ l[i] ]=true; } } for( int i=sz;i<l.size();i++ ){ l2.pb( l[i] ); if( inside[ l[i] ] ){ /// ne smije bit unutra cnt=query( l[i] ); inside[ l[i] ]=false; } } vector<int> r1,r2; r1.clear(); r2.clear(); for( int i=0;i<r.size();i++ ){ if( r1.size() >= l1.size() ){ r2.pb( r[i] ); continue; } if( r2.size() >= l2.size() ){ r1.pb( r[i] ); continue; } int tmp=query( r[i] ); if( tmp == cnt ){ /// nista se nije desilo, dakle vec je bio taj mineral r1.pb( r[i] ); } else{ /// promjenio se broj, dakle dodali smo novi mineral, prema tome on pripada grupi koja je izgasena r2.pb( r[i] ); cnt = tmp; } } conquer( l1,r1 ); conquer( l2,r2 ); } void Solve(int n) { nn=n;///globalno n int curr=0; vector<int> left,right; for( int i=1;i<=2*n;i++ ){ if( left.size() >=n ){ right.pb(i); continue; } if( right.size()>=n ){ left.pb(i); continue; } int tmp=query(i); if( tmp > curr ){ ///novi left.pb( i ); inside[i] = true; curr=tmp; } else{ right.pb(i); /// ne moramo cak ni izbacivati jer je bitno samo mjenjanje, tj flip } } conquer( left, right ); }

Compilation message (stderr)

minerals.cpp: In function 'void conquer(std::vector<int>, std::vector<int>)':
minerals.cpp:46:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for( int i=sz;i<l.size();i++ ){
                       ~^~~~~~~~~
minerals.cpp:56:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for( int i=0;i<r.size();i++ ){
                      ~^~~~~~~~~
minerals.cpp: In function 'void Solve(int)':
minerals.cpp:83:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 if( left.size() >=n ){
                     ~~~~~~~~~~~~^~~
minerals.cpp:87:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 if( right.size()>=n ){
                     ~~~~~~~~~~~~^~~
#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...