#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 )break;
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
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 )break;
~~~~~~~~~~~~^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
3 ms |
504 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
3 ms |
504 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
3 ms |
504 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
3 ms |
504 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
3 ms |
504 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
3 ms |
504 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
3 ms |
504 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
3 ms |
504 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
3 ms |
504 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |