Submission #548577

#TimeUsernameProblemLanguageResultExecution timeMemory
548577beaconmcXylophone (JOI18_xylophone)C++14
0 / 100
1 ms336 KiB
#include <bits/stdc++.h> #include "xylophone.h" typedef long long ll; using namespace std; #define FOR(i, x, y) for(ll i=x; i<y; i++) #define FORNEG(i, x, y) for(ll i=x; i>y; i--) #define ordered_set tree<ll, null_type,less_equal<ll>, rb_tree_tag,tree_order_statistics_node_update> #define fast() ios_base::sync_with_stdio(false);cin.tie(NULL) #define ll int ll twodiff[5001]; ll threediff[5001]; ll max(ll x[5001]){ ll maxi = -1000000; FOR(i,0,5002){ if (x[i]!=0){ maxi = max(maxi, x[i]); } } return maxi; } ll min(ll x[5001]){ ll mini = 1000000; FOR(i,0,5002){ if (x[i]!=0){ mini = min(mini, x[i]); } } return mini; } void solve(ll n){ FOR(i,0,5001){ twodiff[i] = 0; threediff[i] = 0; } FOR(i,1,n){ twodiff[i] = query(i, i+1); } FOR(i,1,n-1){ threediff[i] = query(i, i+2); } FOR(i,2,n){ if (threediff[i] != twodiff[i-1] + twodiff[i]){ twodiff[i] *= twodiff[i-1] / abs(twodiff[i-1]); } } if (max(twodiff) - min(twodiff) >=n){ FOR(i,1,n){ twodiff[i] = abs(twodiff[i]); } twodiff[1] *= -1; FOR(i,2,n){ if (threediff[i] != twodiff[i-1] + twodiff[i]){ twodiff[i] *= twodiff[i-1] / abs(twodiff[i-1]); } } ll sus = min(twodiff); FOR(i,1,n){ twodiff[i] -= sus-1; } FOR(i,2,n){ twodiff[i] += twodiff[i-1]; } FOR(i,1,n){ answer(i, twodiff[i]); } }else{ ll sus = min(twodiff); FOR(i,1,n){ twodiff[i] -= sus-1; } FOR(i,2,n){ twodiff[i] += twodiff[i-1]; } FOR(i,1,n){ answer(i, twodiff[i]); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...