제출 #1159696

#제출 시각아이디문제언어결과실행 시간메모리
1159696dzuizzSpecijacija (COCI20_specijacija)C++20
10 / 110
4093 ms2084 KiB
#include<bits/stdc++.h> using namespace std; //#define DEBUG #define int long long pair<int,int> f(int x){ int l=1,r=200000; while(l<r){ int m=(l+r+1)>>1; if(m*(m-1)/2<x) l=m; else r=m-1; } return {l,x-l*(l-1)/2}; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,q,t; cin>>n>>q>>t; int a[n+1]; for(int i=1;i<=n;++i){ cin>>a[i]; a[i]-=i*(i-1)/2; } while(q--){ int _x,_y; cin>>_x>>_y; pair<int,int> x=f(_x),y=f(_y); #ifdef DEBUG cout<<"x: "<<x.first<<" "<<x.second<<'\n'; cout<<"y: "<<y.first<<" "<<y.second<<'\n'; #endif if(x.first<y.first) swap(x,y); while(x.first>y.first) if(x.second>=a[--x.first]) --x.second; while(x.second!=y.second){ #ifdef DEBUG cout<<"x: "<<x.first<<" "<<x.second<<'\n'; cout<<"y: "<<y.first<<" "<<y.second<<'\n'; #endif if(x.second>a[--x.first]) --x.second; if(y.second>a[--y.first]) --y.second; } #ifdef DEBUG cout<<x.first<<" "<<x.second<<'\n'; #endif cout<<(x.first)*(x.first-1)/2+x.second<<'\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...