Submission #1009619

# Submission time Handle Problem Language Result Execution time Memory
1009619 2024-06-27T17:17:29 Z Ivo_12 timeismoney (balkan11_timeismoney) C++
0 / 100
2000 ms 64840 KB
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define pii pair < ll, ll >
#define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);

using namespace std;

struct Edge {
	ll a, b, t, m;
};

const ll N = 1e3+10, M = 1e5+10;
ll n, m;
Edge edges[M];
ll x, y;

ll par[N];

int fn( int i ) {
	if(par[i] == i) return i;
	return par[i] = fn(par[i]);
}

void un( int a, int b ) {
	a = fn(a); b = fn(b);
	if(a != b) par[b] = a;
	return;
}

void res( void ) {
	for(ll i = 0; i < n; i++) {
		par[i] = i;
	}
}

bool check_un( int a, int b ) {
	return (fn(a) == fn(b));
}

pii mst() {
	ll tout = 0;
	ll mout = 0;
	res();
	int tot = 0;
	for(ll i = 0; i < m; i++) {
		if(!check_un(edges[i].a, edges[i].b)) {
			un(edges[i].a, edges[i].b);
			tout += edges[i].t;
			mout += edges[i].m;
			tot++;
		}
		if(tot == n-1) {
			return mp(tout, mout);
		}
	}
	return mp(tout, mout);
}

bool s_func_t( Edge a, Edge b ) {
	if(b.t > a.t) return 1;
	if(b.t < a.t) return 0;
	if(b.m > a.m) return 1;
	return 0;
}

bool s_func_m( Edge a, Edge b ) {
	if(b.m > a.m) return 1;
	if(b.m < a.m) return 0;
	if(b.t > a.t) return 1;
	return 0;
}

bool s_func_xy( Edge a, Edge b ) {
	return ((b.t * x) + (b.m * y) > (a.t * x) + (a.m * y)) ? 1 : 0;
}

inline pii daq( pii a, pii b ) {
	y = b.F - a.F;
	x = a.S - b.S;
	sort(edges, edges + m, s_func_xy);
	pii temp1;
	pii temp2;
	pii out = mst();
	if(out == a || out == b) {
		if(a.F * a.S < b.F * b.S) return a;
		else return b;
	}
	temp1 = daq(a, out);
	temp2 = daq(out, b);
	if(temp1.F * temp1.S < out.F * out.S) out = temp1;
	if(temp2.F * temp2.S < out.F * out.S) out = temp2;
	
	return out;
}

int main( void ) {
	
	FIO
	cin >> n >> m;
	for(int i = 0; i < m; i++) {
		cin >> edges[i].a >> edges[i].b >> edges[i].t >> edges[i].m;
	}
	sort(edges, edges + m, s_func_t);
	pii temp1 = mst();
	sort(edges, edges + m, s_func_m);
	pii temp2 = mst();
	pii sol = daq(temp1, temp2);
	cout << sol.F << " " << sol.S << "\n";
	
	return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Unexpected end of file - int32 expected
2 Incorrect 0 ms 348 KB Unexpected end of file - int32 expected
3 Incorrect 1 ms 344 KB Unexpected end of file - int32 expected
4 Execution timed out 2101 ms 64840 KB Time limit exceeded
5 Execution timed out 2005 ms 9808 KB Time limit exceeded
6 Execution timed out 2075 ms 11092 KB Time limit exceeded
7 Execution timed out 2044 ms 2136 KB Time limit exceeded
8 Execution timed out 2065 ms 852 KB Time limit exceeded
9 Incorrect 0 ms 348 KB Unexpected end of file - int32 expected
10 Incorrect 0 ms 348 KB Unexpected end of file - int32 expected
11 Incorrect 0 ms 348 KB Unexpected end of file - int32 expected
12 Incorrect 1 ms 348 KB Unexpected end of file - int32 expected
13 Incorrect 0 ms 348 KB Unexpected end of file - int32 expected
14 Incorrect 5 ms 348 KB Unexpected end of file - int32 expected
15 Incorrect 4 ms 476 KB Unexpected end of file - int32 expected
16 Execution timed out 2041 ms 1036 KB Time limit exceeded
17 Execution timed out 2033 ms 1276 KB Time limit exceeded
18 Execution timed out 2067 ms 1784 KB Time limit exceeded
19 Execution timed out 2074 ms 852 KB Time limit exceeded
20 Execution timed out 2061 ms 852 KB Time limit exceeded