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 |
|
|
|
|
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 |