Submission #1063589

#TimeUsernameProblemLanguageResultExecution timeMemory
1063589oscar1fSparklers (JOI17_sparklers)C++17
50 / 100
30 ms15452 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int TAILLE_MAX=1000+5,INFINI=1000*1000*1000; int nbVal,posInit,tempsInit; int val[TAILLE_MAX]; int dv[TAILLE_MAX][TAILLE_MAX],pb[TAILLE_MAX][TAILLE_MAX]; vector<int> calcCumu(vector<int> v) { vector<int> ans={0}; int somCour=0; for (int i:v) { somCour+=i; ans.push_back(somCour); } return ans; } void DFS(int lig,int col) { if (pb[lig][col]==0 and dv[lig][col]==0) { dv[lig][col]=1; DFS(lig+1,col); DFS(lig,col+1); } } bool verif(int temps) { //cout<<temps<<endl; vector<int> listeGau,listeDro; for (int i=posInit;i>1;i--) { listeGau.push_back(2*temps-val[i]+val[i-1]); } for (int i=posInit+1;i<=nbVal;i++) { listeDro.push_back(2*temps-val[i]+val[i-1]); } vector<int> cumuGau=calcCumu(listeGau),cumuDro=calcCumu(listeDro); int tailleGau=cumuGau.size(),tailleDro=cumuDro.size(); for (int i=0;i<=tailleGau;i++) { for (int j=0;j<=tailleDro;j++) { pb[i][j]=1; dv[i][j]=0; } } for (int i=0;i<tailleGau;i++) { for (int j=0;j<tailleDro;j++) { if (cumuGau[i]+cumuDro[j]>=0) { pb[i][j]=0; } } } /*for (int i:cumuGau) { for (int j:cumuDro) { if (i+j>=0) { cout<<1<<" "; } else { cout<<0<<" "; } } cout<<endl; } cout<<endl;*/ DFS(0,0); return (dv[tailleGau-1][tailleDro-1]==1); } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>nbVal>>posInit>>tempsInit; for (int i=1;i<=nbVal;i++) { cin>>val[i]; } int deb=0,fin=INFINI,mid; while (deb!=fin) { mid=(deb+fin)/2; if (verif(mid)) { fin=mid; } else { deb=mid+1; } } cout<<(deb+tempsInit-1)/tempsInit<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...