← Back to topics
Topic

Krtice

sinisha
Daklem... Primjetio sam da su sluzbeni test primjeri za ovaj zadatak sasvim masivni, stoga sam prilicno zabrinut jer naime... Moj kod pokazao se neadekvatnim za 9 test primjer, stoga bih vas zamolio za pomoc ukoliko je netko voljan pomoci.

#include <iostream>
#include <vector>
#include <cmath>

#define in(a, b) scanf("%f %f", &a, &b);

#define mp make_pair
#define s first
#define v second

using namespace std;

int n1, n2;
vector < pair < pair < double, double >, int > > v1, v2;
float a, b;
pair < pair < double, double >, int > k;
vector <double> ou1, ou2;

int main (void){

cin >> n1 >> n2;
ou1 = vector <double> (n1, -1.0);
ou2 = vector <double> (n2, -1.0);

for ( int i = 0; i < n1; ++i ){

in( a, b );
k.s = mp(a, b);
k.v = i;
v1.push_back( k );

}

for ( int i = 0; i < n2; ++i ){

in( a, b );
k.s = mp(a, b);
k.v = i;
v2.push_back( k );

}

sort ( v1.begin(), v1.end() );
sort ( v2.begin(), v2.end() );

int i1 = 0, i2 = 0 ;

while ( (v1.size()-i1) && (v2.size()-i2) ){

double t1 = v2[i2].s.s / v1[i1].s.v, t2 = v1[i1].s.s / v2[i2].s.v;


if ( t1 > t2 ){ ou1[v1[i1].v] = t1; ++i1; }
else { ou2[v2[i2].v] = t2; ++i2; }

}

for ( int i = 0; i < n1; ++i )
printf ("%0.2f\n", ou1[i]);

for ( int i = 0; i < n2; ++i )
printf ("%0.2f\n", ou2[i]);

//system ( "pause" );
return 0;
}

Ispricavam se zbog makroa...