Submission #1004985


Source Code Expand

#include "bits/stdc++.h"
using namespace std;
#define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i))
#define rer(i,l,u) for(int (i)=(int)(l);(i)<=(int)(u);++(i))
#define reu(i,l,u) for(int (i)=(int)(l);(i)<(int)(u);++(i))
static const int INF = 0x3f3f3f3f; static const long long INFL = 0x3f3f3f3f3f3f3f3fLL;
typedef vector<int> vi; typedef pair<int, int> pii; typedef vector<pair<int, int> > vpii; typedef long long ll;
template<typename T, typename U> static void amin(T &x, U y) { if(y < x) x = y; }
template<typename T, typename U> static void amax(T &x, U y) { if(x < y) x = y; }

template<typename T>T gcd(T x, T y) { if(y == 0)return x; else return gcd(y, x%y); }
int nCr_saturated(int n, int k, int infinity) {
	const int MaxK = 30;
	if(k > n) return 0;
	if(k > n / 2) k = n - k;
	if(k == 0) return 1;
	assert(0 <= k && k <= MaxK);
	int factors[MaxK];
	rep(i, k)
		factors[i] = n - i;
	rep(i, k) {
		int x = i + 1;
		rep(j, k) {
			int g = gcd(factors[j], x);
			factors[j] /= g;
			x /= g;
		}
		assert(x == 1);
	}
	int product = 1;
	rep(i, k) {
		long long P = (long long)product * factors[i];
		if(P >= infinity)
			return infinity;
		else
			product = (int)P;
	}
	return product;
}

vector<int> trans(const vector<int> &a, int t, bool naive = false) {
	assert(t >= 0);
	const int logT = 30;
	int M = (int)a.size();
	vector<int> res = a;
	if(t <= logT || naive) {
		rep(k, t) {
			rep(i, M - 1)
				amin((res[i + 1] += res[i]), INF);
		}
	} else {
		int X = min(logT, M);
		rep(i, X) {
			int sum = 0;
			for(int j = i; j >= 0; -- j) {
				int coeff = nCr_saturated((i - j) + t - 1, i - j, INF);
				long long S = sum + (long long)coeff * a[j];
				if(S > INF) {
					sum = INF;
					break;
				} else {
					sum = (int)S;
				}
			}
			res[i] = sum;
		}
		reu(i, X, M)
			res[i] = INF;
	}
	return res;
}

int solve(const vector<int> &a, const vector<int> &b) {
	int M = (int)a.size();
	if(b < a)
		return 0;
	if(b[0] > a[0])
		return INF;
	int t = (b[1] - a[1] + a[0] - 1) / a[0];
	vector<int> c = trans(a, t);
	return b < c ? t : t + 1;
}

int main() {
	int N; int M;
	while(~scanf("%d%d", &N, &M)) {
		vector<vector<int> > A(N, vector<int>(M));
		for(int i = 0; i < N; ++ i) for(int j = 0; j < M; ++ j)
			scanf("%d", &A[i][j]);
		if(M == 1) {
			bool ok = true;
			rep(i, N - 1)
				ok &= A[i][0] < A[i + 1][0];
			puts(ok ? "-1" : "0");
			continue;
		}
		vector<int> g(N - 1);
		bool ok = true;
		rep(i, N - 1) {
			int x = solve(A[i + 1], A[i]);
			if(x == INF) {
				ok = false;
				break;
			} else if(x > 0) {
				g[i] = x;
			} else {
				int y = solve(A[i], A[i + 1]);
				if(y > 0 && y < INF && trans(A[i], y - 1) == A[i + 1])
					-- y;
				g[i] = -y + 1;
			}
		}
		if(!ok) {
			puts("-1");
			continue;
		}
		ll ans = 0;
		ll curt = 0;
		rep(i, N - 1) {
			curt = max(curt + g[i], 0LL);
			ans += curt;
		}
		printf("%lld\n", ans);
	}
	return 0;
}

Submission Info

Submission Time
Task B - Takahashi the Magician
User anta
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2997 Byte
Status WA
Exec Time 142 ms
Memory 4352 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:89:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d", &A[i][j]);
                         ^

Judge Result

Set Name Sample subtask1 subtask2 All
Score / Max Score 0 / 0 0 / 200 0 / 800 0 / 200
Status
AC × 3
AC × 25
WA × 2
AC × 33
WA × 2
AC × 65
WA × 4
Set Name Test Cases
Sample sample_1.txt, sample_2.txt, sample_3.txt
subtask1 sample_1.txt, sample_3.txt, hack_1.txt, hack_2.txt, hack_3.txt, hack_4.txt, hack_5.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_2.txt, subtask_1_20.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt
subtask2 sample_1.txt, sample_2.txt, sample_3.txt, hack_1.txt, hack_2.txt, hack_3.txt, hack_4.txt, hack_5.txt, subtask_2_1.txt, subtask_2_10.txt, subtask_2_11.txt, subtask_2_12.txt, subtask_2_13.txt, subtask_2_14.txt, subtask_2_15.txt, subtask_2_16.txt, subtask_2_17.txt, subtask_2_18.txt, subtask_2_19.txt, subtask_2_2.txt, subtask_2_20.txt, subtask_2_21.txt, subtask_2_22.txt, subtask_2_23.txt, subtask_2_24.txt, subtask_2_25.txt, subtask_2_26.txt, subtask_2_27.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_2_9.txt
All sample_1.txt, sample_2.txt, sample_3.txt, hack_1.txt, hack_2.txt, hack_3.txt, hack_4.txt, hack_5.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_2.txt, subtask_1_20.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_10.txt, subtask_2_11.txt, subtask_2_12.txt, subtask_2_13.txt, subtask_2_14.txt, subtask_2_15.txt, subtask_2_16.txt, subtask_2_17.txt, subtask_2_18.txt, subtask_2_19.txt, subtask_2_2.txt, subtask_2_20.txt, subtask_2_21.txt, subtask_2_22.txt, subtask_2_23.txt, subtask_2_24.txt, subtask_2_25.txt, subtask_2_26.txt, subtask_2_27.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_2_9.txt, subtask_3_1.txt, subtask_3_10.txt, subtask_3_11.txt, subtask_3_12.txt, subtask_3_13.txt, subtask_3_14.txt, subtask_3_2.txt, subtask_3_3.txt, subtask_3_4.txt, subtask_3_5.txt, subtask_3_6.txt, subtask_3_7.txt, subtask_3_8.txt, subtask_3_9.txt
Case Name Status Exec Time Memory
hack_1.txt AC 3 ms 256 KB
hack_2.txt AC 3 ms 256 KB
hack_3.txt AC 3 ms 256 KB
hack_4.txt WA 3 ms 256 KB
hack_5.txt AC 2 ms 256 KB
sample_1.txt AC 3 ms 256 KB
sample_2.txt AC 3 ms 256 KB
sample_3.txt AC 3 ms 256 KB
subtask_1_1.txt AC 3 ms 256 KB
subtask_1_10.txt AC 3 ms 256 KB
subtask_1_11.txt AC 116 ms 4224 KB
subtask_1_12.txt AC 3 ms 256 KB
subtask_1_13.txt AC 3 ms 256 KB
subtask_1_14.txt AC 3 ms 256 KB
subtask_1_15.txt AC 119 ms 4224 KB
subtask_1_16.txt AC 123 ms 4224 KB
subtask_1_17.txt AC 123 ms 4224 KB
subtask_1_18.txt AC 120 ms 4352 KB
subtask_1_19.txt AC 3 ms 256 KB
subtask_1_2.txt AC 3 ms 256 KB
subtask_1_20.txt WA 3 ms 256 KB
subtask_1_3.txt AC 3 ms 256 KB
subtask_1_4.txt AC 3 ms 256 KB
subtask_1_5.txt AC 3 ms 256 KB
subtask_1_6.txt AC 3 ms 256 KB
subtask_1_7.txt AC 3 ms 256 KB
subtask_1_8.txt AC 118 ms 4224 KB
subtask_1_9.txt AC 44 ms 2176 KB
subtask_2_1.txt AC 11 ms 640 KB
subtask_2_10.txt AC 17 ms 896 KB
subtask_2_11.txt AC 86 ms 4224 KB
subtask_2_12.txt AC 86 ms 4224 KB
subtask_2_13.txt AC 85 ms 4224 KB
subtask_2_14.txt AC 87 ms 4224 KB
subtask_2_15.txt AC 3 ms 256 KB
subtask_2_16.txt AC 84 ms 4224 KB
subtask_2_17.txt AC 84 ms 4224 KB
subtask_2_18.txt AC 122 ms 4224 KB
subtask_2_19.txt WA 3 ms 256 KB
subtask_2_2.txt AC 83 ms 4224 KB
subtask_2_20.txt AC 3 ms 256 KB
subtask_2_21.txt AC 3 ms 256 KB
subtask_2_22.txt AC 3 ms 256 KB
subtask_2_23.txt AC 3 ms 256 KB
subtask_2_24.txt AC 3 ms 256 KB
subtask_2_25.txt AC 3 ms 256 KB
subtask_2_26.txt AC 3 ms 256 KB
subtask_2_27.txt AC 3 ms 256 KB
subtask_2_3.txt AC 82 ms 4224 KB
subtask_2_4.txt AC 46 ms 2176 KB
subtask_2_5.txt AC 89 ms 4224 KB
subtask_2_6.txt AC 86 ms 4224 KB
subtask_2_7.txt AC 35 ms 1792 KB
subtask_2_8.txt AC 7 ms 512 KB
subtask_2_9.txt AC 21 ms 1152 KB
subtask_3_1.txt AC 4 ms 256 KB
subtask_3_10.txt AC 126 ms 4224 KB
subtask_3_11.txt AC 124 ms 4224 KB
subtask_3_12.txt AC 122 ms 4224 KB
subtask_3_13.txt AC 3 ms 256 KB
subtask_3_14.txt WA 3 ms 256 KB
subtask_3_2.txt AC 3 ms 256 KB
subtask_3_3.txt AC 125 ms 4224 KB
subtask_3_4.txt AC 124 ms 4224 KB
subtask_3_5.txt AC 124 ms 4224 KB
subtask_3_6.txt AC 125 ms 4224 KB
subtask_3_7.txt AC 142 ms 4224 KB
subtask_3_8.txt AC 128 ms 4224 KB
subtask_3_9.txt AC 124 ms 4224 KB