Submission #1227659


Source Code Expand

#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define rep1(i,n) for(int i=1;i<=(int)(n);i++)
#define all(c) c.begin(),c.end()
#define pb push_back
#define fs first
#define sc second
#define show(x) cout << #x << " = " << x << endl
#define chmin(x,y) x=min(x,y)
#define chmax(x,y) x=max(x,y)
using namespace std;
template<class S,class T> ostream& operator<<(ostream& o,const pair<S,T> &p){return o<<"("<<p.fs<<","<<p.sc<<")";}
template<class T> ostream& operator<<(ostream& o,const vector<T> &vc){o<<"sz = "<<vc.size()<<endl<<"[";for(const T& v:vc) o<<v<<",";o<<"]";return o;}
typedef long long ll;
int MX=100000;
int N,M;
ll o[1000][1000];
ll inf = 1e13;
vector<ll> getnext(vector<ll> a){
	int N = a.size();
	vector<ll> b(N);
	rep(i,N) b[i]=a[i];
	rep(i,N-1) b[i+1]+=b[i];
	return b;
}
ll need(vector<ll> a,vector<ll> b){	//need b++
//	puts("-------------ned");
	if(a[0]<b[0]) return -inf;
	assert(a[0]==b[0]);
	int N = a.size();

	if(a>=b){
		ll nd = (a[1]-b[1]+b[0]-1)/b[0];
		if(a[1]<nd*b[0]+b[1]) return nd;
		assert(a[1]==nd*b[0]+b[1]);
		if(N==2) return nd+1;

		ll nb2 = b[2] + nd*b[1] + nd*(nd+1)/2*b[0];
//		show(nd);
//		show(nb2);
		if(nb2>a[2]) return nd;

		//assert(nd<=10000)
		rep(t,10000000){
			if(a<b) return t;
			b = getnext(b);
		}
	}else{
		a.back()++;
		return 1-need(b,a);
	}
}
ll brute(){
	vector<ll> a(M),b(M);
	rep(i,M) a[i]=o[0][i];
	ll ans=0;
	rep(i,N-1){
		rep(j,M) b[j]=o[i+1][j];
		ll nd=-1;
		rep(t,100000){
			if(a<b){
				nd=t;
				break;
			}
			b=getnext(b);
		}
//		show(nd);
		if(nd==-1) return -1;
		ans+=nd;
		a=b;
	}
	return ans;
}
ll ns[1000];
ll br;
ll solve(){
	cin>>N>>M;
	rep(i,N) rep(j,M) cin>>o[i][j];
	// N=rand()%5+1,M=rand()%5+1;
	// int r0 = rand()%10+1;
	// rep(i,N){
	// 	o[i][0] = r0;
	// 	rep1(j,M-1) o[i][j] = rand()%10+1;
	// }
//	br = brute();
	if(N==1){
		return 0;
	}
	rep(i,N-1) if(o[i][0]>o[i+1][0]){
		return -1;
	}
	if(M==1){
		rep(i,N-1) if(o[i][0]==o[i+1][0]){
			return -1;
		}
		return 0;
	}

	rep(i,N-1){
		vector<ll> a(M),b(M);
		rep(j,M) a[j]=o[i][j],b[j]=o[i+1][j];
		ns[i] = need(a,b);
//		show(ns[i]);
		assert(ns[i]!=inf);
	}

	ll ans = 0;
	ll prev = 0;
	rep(i,N-1){
		ll nd = ns[i] + prev;
		if(nd<0) nd=0;
//		show(nd);
		ans+=nd;
		prev=nd;
	}
	return ans;
}
int main(){
	// srand((unsigned)time(NULL));
	// while(true){
	// 	ll slv = solve();
	// 	// show(slv);
	// 	// show(br);
	// 	if(br != slv){
	// 		puts("0-----");
	// 		cout<<N<<" "<<M<<endl;
	// 		rep(i,N){
	// 			rep(j,M) cout<<o[i][j]<<" ";
	// 			puts("");
	// 		}
	// 		assert(0);
	// 	}
	// 	puts("ok");
//		cout<<solve()<<endl;
//	}
	cout<<solve()<<endl;
}

Submission Info

Submission Time
Task B - Takahashi the Magician
User sigma425
Language C++14 (GCC 5.4.1)
Score 1200
Code Size 2767 Byte
Status AC
Exec Time 418 ms
Memory 8192 KB

Judge Result

Set Name Sample subtask1 subtask2 All
Score / Max Score 0 / 0 200 / 200 800 / 800 200 / 200
Status
AC × 3
AC × 27
AC × 35
AC × 72
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, sample_1.txt, sample_2.txt, sample_3.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 1 ms 256 KB
hack_2.txt AC 1 ms 256 KB
hack_3.txt AC 1 ms 256 KB
hack_4.txt AC 1 ms 256 KB
hack_5.txt AC 1 ms 256 KB
sample_1.txt AC 1 ms 256 KB
sample_2.txt AC 1 ms 256 KB
sample_3.txt AC 1 ms 256 KB
subtask_1_1.txt AC 2 ms 640 KB
subtask_1_10.txt AC 2 ms 640 KB
subtask_1_11.txt AC 355 ms 8064 KB
subtask_1_12.txt AC 3 ms 6272 KB
subtask_1_13.txt AC 4 ms 6272 KB
subtask_1_14.txt AC 1 ms 256 KB
subtask_1_15.txt AC 373 ms 8192 KB
subtask_1_16.txt AC 389 ms 8064 KB
subtask_1_17.txt AC 389 ms 8064 KB
subtask_1_18.txt AC 401 ms 8064 KB
subtask_1_19.txt AC 1 ms 256 KB
subtask_1_2.txt AC 1 ms 256 KB
subtask_1_20.txt AC 3 ms 6272 KB
subtask_1_3.txt AC 2 ms 640 KB
subtask_1_4.txt AC 2 ms 640 KB
subtask_1_5.txt AC 3 ms 3328 KB
subtask_1_6.txt AC 4 ms 5376 KB
subtask_1_7.txt AC 4 ms 5376 KB
subtask_1_8.txt AC 359 ms 8192 KB
subtask_1_9.txt AC 95 ms 8064 KB
subtask_2_1.txt AC 19 ms 6656 KB
subtask_2_10.txt AC 30 ms 4224 KB
subtask_2_11.txt AC 184 ms 8064 KB
subtask_2_12.txt AC 186 ms 8192 KB
subtask_2_13.txt AC 171 ms 8064 KB
subtask_2_14.txt AC 193 ms 8064 KB
subtask_2_15.txt AC 3 ms 6272 KB
subtask_2_16.txt AC 180 ms 8064 KB
subtask_2_17.txt AC 177 ms 8064 KB
subtask_2_18.txt AC 180 ms 8064 KB
subtask_2_19.txt AC 3 ms 6272 KB
subtask_2_2.txt AC 158 ms 8064 KB
subtask_2_20.txt AC 2 ms 512 KB
subtask_2_21.txt AC 2 ms 512 KB
subtask_2_22.txt AC 2 ms 768 KB
subtask_2_23.txt AC 2 ms 640 KB
subtask_2_24.txt AC 2 ms 768 KB
subtask_2_25.txt AC 1 ms 512 KB
subtask_2_26.txt AC 2 ms 640 KB
subtask_2_27.txt AC 2 ms 640 KB
subtask_2_3.txt AC 158 ms 8064 KB
subtask_2_4.txt AC 82 ms 4352 KB
subtask_2_5.txt AC 193 ms 8192 KB
subtask_2_6.txt AC 185 ms 8064 KB
subtask_2_7.txt AC 64 ms 4352 KB
subtask_2_8.txt AC 10 ms 1664 KB
subtask_2_9.txt AC 38 ms 4352 KB
subtask_3_1.txt AC 3 ms 3328 KB
subtask_3_10.txt AC 418 ms 8064 KB
subtask_3_11.txt AC 389 ms 8064 KB
subtask_3_12.txt AC 387 ms 8064 KB
subtask_3_13.txt AC 3 ms 3328 KB
subtask_3_14.txt AC 3 ms 6272 KB
subtask_3_2.txt AC 4 ms 3328 KB
subtask_3_3.txt AC 394 ms 8192 KB
subtask_3_4.txt AC 393 ms 8064 KB
subtask_3_5.txt AC 389 ms 8064 KB
subtask_3_6.txt AC 393 ms 8064 KB
subtask_3_7.txt AC 314 ms 8192 KB
subtask_3_8.txt AC 378 ms 8192 KB
subtask_3_9.txt AC 390 ms 8064 KB