Submission #278068

#TimeUsernameProblemLanguageResultExecution timeMemory
278068erkamXylophone (JOI18_xylophone)C++17
0 / 100
0 ms384 KiB
#include "xylophone.h" #include<bits/stdc++.h> #define endl "\n" #define all(v) v.begin(),v.end() #define st first #define nd second #define mp make_pair #define pb push_back using namespace std; typedef long long lo; const int mod=1000000007,N=500005; lo a,b,c,d,e,f,g=1,h[N]; pair<lo,lo>arr[N]; string s; vector<lo>v; // int query(int a,int b){ } // void answer(int a,int b){ } void solve(int n){ for(lo i=1;i<n;i++){ arr[i].st=query(i,i+1); if(i<n-1)arr[i].nd=query(i,i+2); } h[1]=1; for(lo i=1;i<=n-2;i++){ if(arr[i].st+arr[i+1].st==arr[i].nd)h[i+1]=h[i]; else h[i+1]=(h[i]^1); } lo sum=0; pair<lo,lo>mx={0,1},mn={0,1}; for(lo i=1;i<n;i++){ if(h[i]==0)sum-=arr[i].st; else sum+=arr[i].st; if(mx.st<sum)mx={sum,i}; if(mn.st>sum)mn={sum,i}; } if(mx.nd>mn.nd){ lo hehe=n-mx.st; answer(1,hehe); for(lo i=1;i<n;i++){ hehe+=arr[i].st*(h[i]==0?-1:1); answer(i+1,hehe); } return; } h[1]=0; sum=0; lo mxi=0; for(lo i=1;i<=n-2;i++){ if(arr[i].st+arr[i+1].st==arr[i].nd)h[i+1]=h[i]; else h[i+1]=(h[i]^1); } for(lo i=1;i<n;i++){ if(h[i]==0)sum-=arr[i].st; else sum+=arr[i].st; mxi=max(sum,mxi); } lo hehe=n-mxi; answer(1,hehe); for(lo i=1;i<n;i++){ hehe+=arr[i].st*(h[i]==0?-1:1); answer(i+1,hehe); } } // int main(){ // #ifdef local // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); // #endif // ios_base::sync_with_stdio(false); // cin.tie(NULL); cout.tie(NULL); // // cin >> g; // // while(g--)solve(); // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...