Submission #524367

# Submission time Handle Problem Language Result Execution time Memory
524367 2022-02-09T06:33:30 Z fatemetmhr Naan (JOI19_naan) C++17
29 / 100
48 ms 8892 KB
//  ~Be name khoda~  //

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

#define pb       push_back
#define mp       make_pair
#define all(x)   x.begin(), x.end()
#define fi       first
#define se       second
#define cl       clear
#define endll    '\n'

const int maxn  =  1e6   + 10;
const int maxn5 =  2e3   + 10;
const int maxnt =  1.2e6 + 10;
const int maxn3 =  1e3   + 10;
const int mod   =  1e9   +  7;
const ll  inf   =  2e18;

int n, l, per[maxn5];
ll a[maxn5][maxn5], ps[maxn5][maxn5];
long double need[maxn5];
long double out[maxn5];
bool mark[maxn5];

inline ll get_val(int l, int r, int i){
	if(l >= r)
		return 0;
	return ps[i][r] - ps[i][l];
}

inline long double get(int i, long double last){
	long double ret = 0;
	long double ask = need[i];
	int id = ceil(last);
	if(id > last){
		long double rem = id - last;
		long double sup = ask / a[i][id];
		if(sup >= rem){
			last = id;
			ask -= rem * a[i][id];
		}
		else{
			return last + sup;
		}
	}
	//cout << i << ' ' << last << ' ' << id << ' ' << ask << endl;
	int lo = id, hi = l + 1;
	while(hi - lo > 1){
		int mid = (lo + hi) >> 1;
		if(get_val(id, mid, i) <= ask)
			lo = mid;
		else
			hi = mid;
	}
	
	//cout << lo << ' ' << ask << endl;
	
	last = lo;
	ask -= get_val(id, lo, i);
	long double sup = ask / a[i][lo + 1];
	//cout << last << ' ' << sup << ' ' << ask << endl;
	return last + sup;
	
}

int main()
{
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);

	cin >> n >> l;
	for(int i = 0; i < n; i++) for(int j = 1; j <= l; j++){
		cin >> a[i][j];
		need[i] += a[i][j];
		ps[i][j] = a[i][j] + (j > 0 ? ps[i][j - 1] : 0);
	}
	for(int i = 0; i < n; i++){
		//cout << "* " << i << ' ' << need[i] << endl;
		need[i] /= n;
		//cout << need[i] << endl;
	}
	long double last = 0;
	for(int i = 0; i < n - 1; i++){
		int v = 0;
		long double have = l + 5;
		for(int j = 0; j < n; j++) if(!mark[j]){
			long double cur = get(j, last);
			//cout << i << ' ' << j << ' ' << cur << ' ' << last << endl;
			if(cur <= have){
				v = j;
				have = cur;
			}
		}
		
		per[i] = v;
		last = have;
		out[i] = last;
		mark[v] = true;
			
	}
	
	for(int i = 0; i < n; i++) if(!mark[i])
		per[n - 1] = i;
	
	for(int i = 0; i < n - 1; i++){
		ll ans = out[i] * 1e9;
		cout << ans << ' ' << int(1e9) << '\n';
	}
	for(int i = 0; i < n; i++)
		cout << per[i] + 1 << ' ';
	cout << endl;
}












Compilation message

naan.cpp: In function 'long double get(int, long double)':
naan.cpp:37:14: warning: unused variable 'ret' [-Wunused-variable]
   37 |  long double ret = 0;
      |              ^~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 232 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Correct 4 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 1 ms 332 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 460 KB Output is correct
4 Correct 1 ms 460 KB Output is correct
5 Correct 2 ms 460 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 460 KB Output is correct
10 Correct 1 ms 460 KB Output is correct
11 Correct 1 ms 460 KB Output is correct
12 Correct 0 ms 332 KB Output is correct
13 Correct 1 ms 332 KB Output is correct
14 Correct 1 ms 460 KB Output is correct
15 Correct 1 ms 460 KB Output is correct
16 Correct 2 ms 460 KB Output is correct
17 Correct 1 ms 460 KB Output is correct
18 Correct 1 ms 460 KB Output is correct
19 Correct 1 ms 460 KB Output is correct
20 Correct 1 ms 460 KB Output is correct
21 Correct 1 ms 460 KB Output is correct
22 Correct 1 ms 460 KB Output is correct
23 Correct 0 ms 332 KB Output is correct
24 Correct 1 ms 460 KB Output is correct
25 Correct 1 ms 460 KB Output is correct
26 Correct 1 ms 332 KB Output is correct
27 Correct 1 ms 460 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 232 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Correct 4 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 1 ms 332 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 1 ms 332 KB Output is correct
16 Correct 1 ms 332 KB Output is correct
17 Correct 1 ms 332 KB Output is correct
18 Correct 1 ms 460 KB Output is correct
19 Correct 1 ms 460 KB Output is correct
20 Correct 2 ms 460 KB Output is correct
21 Correct 1 ms 332 KB Output is correct
22 Correct 1 ms 332 KB Output is correct
23 Correct 1 ms 332 KB Output is correct
24 Correct 1 ms 460 KB Output is correct
25 Correct 1 ms 460 KB Output is correct
26 Correct 1 ms 460 KB Output is correct
27 Correct 0 ms 332 KB Output is correct
28 Correct 1 ms 332 KB Output is correct
29 Correct 1 ms 460 KB Output is correct
30 Correct 1 ms 460 KB Output is correct
31 Correct 2 ms 460 KB Output is correct
32 Correct 1 ms 460 KB Output is correct
33 Correct 1 ms 460 KB Output is correct
34 Correct 1 ms 460 KB Output is correct
35 Correct 1 ms 460 KB Output is correct
36 Correct 1 ms 460 KB Output is correct
37 Correct 1 ms 460 KB Output is correct
38 Correct 0 ms 332 KB Output is correct
39 Correct 1 ms 460 KB Output is correct
40 Correct 1 ms 460 KB Output is correct
41 Correct 1 ms 332 KB Output is correct
42 Correct 1 ms 460 KB Output is correct
43 Incorrect 48 ms 8892 KB Not a fair distribution.
44 Halted 0 ms 0 KB -