Omówienie zadania Photoshoot z Amerykańskiej Olimpiady Informatycznej USACO:
–
Link do zadania:
http://usaco.org/index.php?page=viewproblem2&cpid=988
Link do zadania:
http://usaco.org/index.php?page=viewproblem2&cpid=988
–
Zadanie wymaga jedynie pomysłu i świetnie przygotowuje do Olimpiady Informatycznej Juniorów
–
Zadanie omawia Jędrzej, laureat poprzednich edycji Olimpiady Informatycznej:
który w filmie dzieli się również swoim doświadczeniem:
Poniżej kod wzorcowy do zadania użyty przez Jędrzeja
–
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int TablicaSum[N];
int TablicaWynikow[N];
int TablicaWystapien[N];
int Sprawdz(int n){
int aktu;
for(int i=1; i<=n; i++) TablicaWystapien[i]=0;
TablicaWystapien[ TablicaWynikow[1] ]=1;
for(int i=2; i<=n; i++){
TablicaWynikow[i]=TablicaSum[i-1]-TablicaWynikow[i-1];
aktu=TablicaWynikow[i];
if( TablicaWystapien[ aktu ]==1 || aktu>n || aktu<1) return 0;
TablicaWystapien[ aktu ]=1;
}
return 1;
}
int main (){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
freopen("photo.in", "r", stdin);
freopen("photo.out", "w", stdout);
int n;
cin>>n;
for(int i=1; i<n; i++) cin>>TablicaSum[i];
for(int i=1; i<=n; i++){
TablicaWynikow[1]=i;
if( Sprawdz(n) ) break;
}
for(int i=1; i<n; i++)
cout << TablicaWynikow[i] << " ";
cout << TablicaWynikow[n];
cout << "\n";
return 0;
}
Photoshoot_100p_KodC++