Submission #203659

# Submission time Handle Problem Language Result Execution time Memory
203659 2020-02-21T19:00:53 Z ics0503 Naan (JOI19_naan) C++17
0 / 100
75 ms 504 KB
#include<stdio.h>
#include<set>
#include<vector>
using namespace std;
set<long long >people;
struct xy { int x; double y; }L[2121];
double need[2121];
long long v[2121][2121], S[2121][2121];
long long gcd(long long a, long long b) {
	if (b == 0)return a;
	return gcd(b, a%b);
}
vector<int>ans;
int main() {
	freopen("input.txt", "r", stdin);
	long long n, l, i, j; scanf("%lld%lld", &n, &l);
	for (i = 1; i <= n; i++)people.insert(i);
	bool flag = 1;
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= l; j++)scanf("%lld", &v[i][j]);
		long long gg = v[i][1];
		for (j = 1; j <= l; j++)gg = gcd(gg, v[i][j]);
		for (j = 1; j <= l; j++) {
			v[i][j] /= gg; S[i][j] = S[i][j - 1] + v[i][j];
			need[i] += v[i][j];
			if (v[i][j] != v[1][j])flag = 0;
		}
		need[i] /= n;
	}
	if (flag) {
		for (i = 1; i <= n-1; i++) {
			printf("%lld %lld\n", i*l, n);
		}
		for (i = 1; i <= n; i++)printf("%d ", i);
		return 0;
	}
	long long befa = 1;double p = 0;
	for (i = 1; i <= n - 1; i++) {
		long long mnx = 1e9;double mny; long long mnw;
		for (long long who : people) {
			if ((1-p) * v[who][befa] > need[who]) {
				L[who].x = befa;
				L[who].y = p + (need[who] - p*v[who][befa]) / v[who][befa];
			}
			else {
				while ((1 - p) * v[who][befa] + (S[who][L[who].x] - S[who][befa]) <= need[who]) {
					L[who].x++;
				}
				L[who].y = (need[who] - (1 - p) * v[who][befa] - (S[who][L[who].x - 1] - S[who][befa])) / v[who][L[who].x];
			}
			if (mnx > L[who].x || (mnx == L[who].x && mny > L[who].y)) {
				mnx = L[who].x;
				mny = L[who].y;
				mnw = who;
			}
		}
		long long mmnx = 1e9; double mmny; long long mmnw;
		for (long long who : people) if (mnw != who) {
			if (mmnx > L[who].x || (mmnx == L[who].x&&mmny > L[who].y)) {
				mmnx = L[who].x;
				mmny = L[who].y;
				mmnw = who;
			}
		}
		befa = (L[mnw].x+L[mmnw].x)/2, p = (L[mnw].y+L[mmnw].y)/2;
		if ((L[mnw].x + L[mmnw].x) % 2)p += 0.5;
		if (p >= 1)befa++, p = p - 1;
		long long gj = 1e8;
		long long g = befa*gj + p*gj;
		printf("%lld %lld\n", g, gj);
		people.erase(mnw);
		ans.push_back(mnw);
		L[mnw] = { 0, 0 };
	}
	for (int i = 0; i < ans.size(); i++)printf("%d ", ans[i]);
	printf("%lld", *people.begin());
	return 0;
}

Compilation message

naan.cpp: In function 'int main()':
naan.cpp:34:42: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long long int' [-Wformat=]
   for (i = 1; i <= n; i++)printf("%d ", i);
                                          ^
naan.cpp:75:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < ans.size(); i++)printf("%d ", ans[i]);
                  ~~^~~~~~~~~~~~
naan.cpp:15:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
  freopen("input.txt", "r", stdin);
  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
naan.cpp:16:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  long long n, l, i, j; scanf("%lld%lld", &n, &l);
                        ~~~~~^~~~~~~~~~~~~~~~~~~~
naan.cpp:20:32: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   for (j = 1; j <= l; j++)scanf("%lld", &v[i][j]);
                           ~~~~~^~~~~~~~~~~~~~~~~~
naan.cpp:65:56: warning: 'mmnw' may be used uninitialized in this function [-Wmaybe-uninitialized]
   befa = (L[mnw].x+L[mmnw].x)/2, p = (L[mnw].y+L[mmnw].y)/2;
                                                ~~~~~~~~^
naan.cpp:59:44: warning: 'mmny' may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (mmnx > L[who].x || (mmnx == L[who].x&&mmny > L[who].y)) {
                           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
naan.cpp:51:43: warning: 'mny' may be used uninitialized in this function [-Wmaybe-uninitialized]
    if (mnx > L[who].x || (mnx == L[who].x && mny > L[who].y)) {
                          ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Runtime error 75 ms 504 KB Execution killed with signal 8 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 75 ms 504 KB Execution killed with signal 8 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 75 ms 504 KB Execution killed with signal 8 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -