This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include <fstream>
#define endl '\n'
#define mod 32768
#define INF 100000000000000
//#define ll long long
//#define cin fin
//#define cout fout
using namespace std;
//ofstream fout("convention.out");
//ifstream fin("convention.in");
#include "xylophone.h"
static int A[5000];
map<pair<int,int>,int> mp;
void dif(int n)
{
for(int i = 1; i < n; i++)
{
mp[{i,i+1}] = query(i,i+1);
}
for(int i = 1; i < n-1; i++)
{
mp[{i,i+2}] = query(i,i+2);
}
}
void solve(int N) {
dif(N);
int arr[N+1];
int mn = 1;
arr[1] = 1;
arr[2] = mp[{1,2}]+1;
for(int i = 3; i <= N; i++)
{
if(mp[{i-2,i-1}]+mp[{i-1,i}] == mp[{i-2,i}])
{
if(arr[i-2] < arr[i-1])
{
arr[i] = arr[i-1]+mp[{i-1,i}];
}
else
{
arr[i] = arr[i-1]-mp[{i-1,i}];
}
}
else
{
if(arr[i-2] < arr[i-1])
{
arr[i] = arr[i-1]-mp[{i-1,i}];
}
else
{
arr[i] = arr[i-1]+mp[{i-1,i}];
}
}
mn = min(mn,arr[i]);
}
for(int i = 1; i <= N; i++)
{
if(mn == 1)
break;
arr[i] += abs(mn)+1;
}
bool good = false;
for(int i = 1; i <= N; i++)
{
if(arr[i] == 1)
{
good = true;
break;
}
else if(arr[i] == N)
{
break;
}
}
if(!good)
{
for(int i = 1; i <= N; i++)
{
arr[i] = abs(arr[i]-N)+1;
}
}
for(int i = 1; i <= N; i++)
{
answer(i,arr[i]);
}
}
Compilation message (stderr)
xylophone.cpp:13:12: warning: 'A' defined but not used [-Wunused-variable]
13 | static int A[5000];
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |