← Back to topics
Topic

Krtice

s
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...