답안 #257972

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
257972 2020-08-05T06:48:24 Z super_j6 Naan (JOI19_naan) C++14
0 / 100
33 ms 63104 KB
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define endl '\n'
#define ll long long
#define pi pair<ll, ll>
#define f first
#define s second

struct fr{
	ll x, y;
	
	fr(ll X = 0, ll Y = 1){
		x = X, y = Y;
		ll g = __gcd(x, y);
		x /= g, y /= g;
	}
	
	friend fr operator+(fr a, fr b){
		return fr(a.x * b.y + b.x * a.y, a.y * b.y);
	}
	
	friend fr operator-(fr a, fr b){
		return fr(a.x * b.y - b.x * a.y, a.y * b.y);
	}
	
	friend fr operator*(fr a, fr b){
		return fr(a.x * b.x, a.y * b.y);
	}
	
	friend fr operator/(fr a, fr b){
		return fr(a.x * b.y, a.y * b.x);
	}
	
	friend bool operator<(fr a, fr b){
		return a.x * b.y < b.x * a.y;
	}
};

const int mxn = 2001;
int n, m;
fr a[mxn][mxn];
bool vis[mxn];
int vi[mxn];
fr vf[mxn];

fr f(int x, fr y){
	int z = y.x / y.y;
	return a[x][z] + (y - fr(z)) * (a[x][z + 1] - a[x][z]);
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	cin >> n >> m;
	
	for(int i = 1; i <= n; i++)
	for(int j = 1; j <= m; j++){
		ll x;
		cin >> x;
		a[i][j] = fr(x) + a[i][j - 1];
	}
	
	for(int i = 1; i <= n; i++){
		vf[i] = fr(n + 1);
		for(int j = 1; j <= n; j++){
			if(vis[j]) continue;
			fr x = a[j][m] / fr(n) + f(j, vf[i - 1]);
			if(a[j][m] < x){
				cout << -1 << endl;
				return 0;
			}
			
			int it = upper_bound(a[j], a[j] + m, x) - a[j] - 1;
			fr y = fr(it) + (x - a[j][it]) / (a[j][it + 1] - a[j][it]);
			if(y < vf[i]) vi[i] = j, vf[i] = y;
		}
		vis[vi[i]] = 1;
		if(i < n) cout << vf[i].x << " " << vf[i].y << endl;
	}
	
	cout << vi[1];
	for(int i = 2; i <= n; i++) cout << " " << vi[i];
	cout << endl;

	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 33 ms 63096 KB Integer parameter [name=P_i] equals to 0, violates the range [1, 2]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 30 ms 63104 KB Integer parameter [name=P_i] equals to 0, violates the range [1, 2]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 33 ms 63096 KB Integer parameter [name=P_i] equals to 0, violates the range [1, 2]
2 Halted 0 ms 0 KB -