제출 #548579

#제출 시각아이디문제언어결과실행 시간메모리
548579beaconmcXylophone (JOI18_xylophone)C++14
0 / 100
0 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 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] != abs(twodiff[i-1]) + abs(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] != abs(twodiff[i-1]) + abs(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...