#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |