Submission #777445

#TimeUsernameProblemLanguageResultExecution timeMemory
777445a_aguiloSails (IOI07_sails)C++14
25 / 100
1064 ms65536 KiB
#include<bits/stdc++.h> using namespace std; int N; long long sol, ans; const int maxN = 100002; const int maxH = 100002; int H[maxN]; int K[maxN]; int occupation[maxH]; void backtracking(int mast, int leftSails, int h){ if(h == 0){ if(mast == 0){ sol = min(sol, ans); return; } else backtracking(mast-1, K[mast-1], H[mast-1]); }else{ if(leftSails == h){ ans += occupation[h]; occupation[h]++; backtracking(mast, leftSails-1, h-1); occupation[h]--; ans -= occupation[h]; }else if(leftSails){ backtracking(mast, leftSails, h-1); ans += occupation[h]; occupation[h]++; backtracking(mast, leftSails-1, h-1); occupation[h]--; ans -= occupation[h]; }else{ backtracking(mast-1, K[mast-1], H[mast-1]); } } } int main(){ sol = 1e18; ans = 0; cin >> N; for(int i = 1; i <= N; ++i) cin >> H[i] >> K[i]; backtracking(N, K[N], H[N]); cout << sol << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...