Submission #996085

#TimeUsernameProblemLanguageResultExecution timeMemory
996085khanhtbXylophone (JOI18_xylophone)C++14
0 / 100
1 ms344 KiB
#include<bits/stdc++.h> #include "xylophone.h" #define ll long long #define ull unsigned long long #define ld long double #define pb push_back #define pf push_front #define vi vector<int> #define vii vector<vi> #define pint pair<int,int> #define vpint vector<pint> #define aint(a) a.begin(), a.end() #define fi first #define se second using namespace std; const int mod = 1e9+7; const int inf = 1e18; const int base = 31; const int blocksz = 320; const int N = 1e4+8; const int buff = 1e5+1; int a[N],dist[N][2]; bool check(int n){ set<int> s; bool meetn = 0; for(int i = 1; i <= n; i++){ s.insert(a[i]); if(a[i] == 1 && meetn) return 0; if(a[i] == n) meetn = 1; } if((ll)s.size() != n) return 0; if(*s.begin() != 1) return 0; if(*s.rbegin() != n) return 0; return 1; } void solve(int n){ for(int i = 2; i <= n; i++){ if(i > 1) dist[i][0] = query(i-1,i); if(i > 2) dist[i][1] = query(i-2,i); } for(int x = 1; x <= n; x++){ a[1] = x; a[2] = x+dist[2][0]; for(int i = 3; i <= n; i++){ if(a[i-2] > a[i-1]){ if (a[i-2]-a[i-1]+dist[i][0] == dist[i][1]) a[i] = a[i-1]-dist[i][0]; else a[i] = a[i-1]+dist[i][0]; } else{ if (a[i-2]-a[i-1]+dist[i][0] == dist[i][1]) a[i] = a[i-1]+dist[i][0]; else a[i] = a[i-1]-dist[i][0]; } } if(check(n)) break; a[1] = x; a[2] = x-dist[2][0]; for(int i = 3; i <= n; i++){ if(a[i-2] > a[i-1]){ if (a[i-2]-a[i-1]+dist[i][0] == dist[i][1]) a[i] = a[i-1]-dist[i][0]; else a[i] = a[i-1]+dist[i][0]; } else{ if (a[i-2]-a[i-1]+dist[i][0] == dist[i][1]) a[i] = a[i-1]+dist[i][0]; else a[i] = a[i-1]-dist[i][0]; } } if(check(n)) break; } for(int i = 1; i <= n; i++) answer(i,a[i]); }

Compilation message (stderr)

xylophone.cpp:17:17: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+18' to '2147483647' [-Woverflow]
   17 | const int inf = 1e18;
      |                 ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...