제출 #1315243

#제출 시각아이디문제언어결과실행 시간메모리
1315243vtnooXylophone (JOI18_xylophone)C++20
100 / 100
28 ms448 KiB
#include "xylophone.h" #include <bits/stdc++.h> #define L(i, j, k) for(int i = (j); i <= (k); i++) #define R(i, j, k) for(int i = (j); i >= (k); i--) #define ll long long #define sz(a) ((int) a.size()) #define all(a) a.begin(), a.end() #define vi vector<ll> #define pb emplace_back #define me(a, x) memset(a, x, sizeof(a)) #define fst first #define snd second #define ii pair<ll, ll> using namespace std; const int MAXN=5000; static int A[MAXN]; int diff[MAXN+5],type[MAXN+5]; void solve(int N) { //~ cout<<"HOLA"<<endl; L(i,0,N-2){ diff[i]=query(i+1,i+2); } //~ cout<<"HOLAAA"<<endl; L(i,1,N-2){ if(diff[i-1]+diff[i]==query(i,i+2)){ type[i]=type[i-1]; }else{ type[i]=type[i-1]^1; } }// ya tengo el array de subidas y bajadas //~ cout<<"HOLAAAAAA"<<endl; L(paso,1,2){ //~ cout<<"HOLA2"<<endl; vi res(N,0); L(i,0,N-2){ if(type[i]==1){ res[i+1]=res[i]+diff[i]; }else{ res[i+1]=res[i]-diff[i]; } } //~ cout<<"HOLA3"<<endl; int minpos=min_element(all(res))-res.begin(); int maxpos=max_element(all(res))-res.begin(); //~ cout<<minpos<<" "<<maxpos<<endl; if(minpos>maxpos){ L(i,0,N-2)type[i]^=1; continue; } //~ cout<<"HOLA4"<<endl; int norm=1-res[minpos]; //~ cout<<norm<<endl; L(i,0,N-1)res[i]+=norm; L(i,0,N-1)answer(i+1,res[i]); break; } return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...