Szczegółowe omówienie zadania Race z dywizji Brown Amerykańskiej Olimpiady Informatycznej USACO:
https://youtu.be/XQcYAuPheVM?t=5838
https://youtu.be/XQcYAuPheVM?t=5838
–
——-
Poniżej kod wzorcowy do zadania użyty w powyższym omówieniu.
–
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int MAXZAK=100*1000;
int Wypisz(int a, int k){
int ile, maxi;
ile=maxi=0;
ll odl=0LL;
for(int i=1; i<=MAXZAK; i++){
if( i<=a ){
odl+=(ll)i;
maxi=i;
ile=1;
}
else{
if(ile==2){
maxi++;
ile=1;
odl+=maxi;
}
else{
ile++;
odl+=maxi;
}
}
if( odl>=(ll)k ) return i;
}
}
int main (){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
freopen("race.in", "r", stdin);
freopen("race.out", "w", stdout);
int n, k, a;
cin>>k>>n;
for(int i=1; i<=n; i++){
cin>>a;
cout << Wypisz(a, k) << "\n";
}
return 0;
}
Link do pobrania pliku z kodem C++ zadania "Race"