Submission #566077

#TimeUsernameProblemLanguageResultExecution timeMemory
566077DodoXylophone (JOI18_xylophone)C++14
100 / 100
100 ms1132 KiB
#include <bits/stdc++.h> #define ll long long //#define endl '\n' #define pb push_back using namespace std; const ll mx=100006; #include "xylophone.h" static int A[5000]; void solve(int n) { map<pair<int,int>,int>mp; for(int i=1;i<=n;i++) { if(i+1<=n) mp[{i,i+1}]=query(i, i+1); if(i+2<=n) mp[{i,i+2}]=query(i, i+2); } ll sa[n+1],sb[n+1]; deque<bool>v; bool m=false; v.push_back(m); for(int i = 1; i <= n-2; i++) { int c=mp[{i,i+2}],x=mp[{i,i+1}],y=mp[{i+1,i+2}]; if(c!=x+y) { if(m)m=0; else m=1; } v.push_back(m); } sa[1]=1; sb[1]=1; ll mna=1,mnb=1; for(int i=2;i<=n;i++) { if(v.front()) { sa[i]=sa[i-1]+mp[{i-1,i}]; sb[i]=sb[i-1]-mp[{i-1,i}]; } else { sa[i]=sa[i-1]-mp[{i-1,i}]; sb[i]=sb[i-1]+mp[{i-1,i}]; } mna=min(mna,sa[i]); mnb=min(mnb,sb[i]); v.pop_front(); } ll x=1-mna,y=1-mnb,z=-1; for(int i=1;i<=n;i++) { sa[i]+=x; sb[i]+=y; if(sa[i]==1&&z==-1)z=1; if(sb[i]==1&&z==-1)z=0; } for(int i=1;i<=n;i++) { if(z) answer(i, sa[i]); else answer(i, sb[i]); } }

Compilation message (stderr)

xylophone.cpp:9:12: warning: 'A' defined but not used [-Wunused-variable]
    9 | static int A[5000];
      |            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...