제출 #620919

#제출 시각아이디문제언어결과실행 시간메모리
620919amin말 (IOI15_horses)C++14
17 / 100
1588 ms28212 KiB
#include "horses.h" #include<bits/stdc++.h> using namespace std; long long x[500001]; long long seg[1000002],segg[1000002],mu[1000002]; long long y[500001]; long long h=(1e9+1); long long mod=1e9+7; void build(long v,long tl,long tr) { if(tl==tr) { seg[v]=x[tl]; mu[v]=seg[v]; return ; } long tm=(tl+tr)/2; build(v*2,tl,tm); build(v*2+1,tm+1,tr); seg[v]=seg[v*2]*seg[v*2+1]; mu[v]=(mu[v*2]*mu[v*2+1])%mod; if(seg[v]>h) { seg[v]=h; } } void update(long v,long tl,long tr,long in) { if(tl==tr&&tl==in) { seg[v]=x[in]; mu[v]=seg[v]; return ; } long tm=(tl+tr)/2; if(tm>=in) { update(v*2,tl,tm,in); }else { update(v*2+1,tm+1,tr,in); } seg[v]=seg[v*2]*seg[v*2+1]; mu[v]=(mu[v*2]*mu[v*2+1])%mod; if(seg[v]>h) { seg[v]=h; } } long long get(long v,long tl,long tr,long l,long r) { if(l==tl&&r==tr) { return seg[v]; } long tm=(tl+tr)/2; if(r<=tm) { return get(v*2,tl,tm,l,r); } if(l>tm) { return get(v*2+1,tm+1,tr,l,r); } long long j=get(v*2,tl,tm,l,tm)*get(v*2+1,tm+1,tr,tm+1,r); if(j>h) { j=h; } return j; } long n; void build2(long v,long tl,long tr) { if(tl==tr) { segg[v]=tl; return ; } long tm=(tl+tr)/2; build2(v*2,tl,tm); build2(v*2+1,tm+1,tr); long long a=segg[v*2]; long long b=segg[v*2+1]; // cout<<a<<' '<<b<<' '; // cout<<y[a]<<' '<<y[b]*get(1,0,n-1,a+1,b)<<endl; if(y[a]>(y[b]*get(1,0,n-1,a+1,b))) { segg[v]=a; }else { segg[v]=b; } } void update2(long v,long tl,long tr,long in) { if(tl==tr) { segg[v]=tl; return ; } long tm=(tl+tr)/2; if(tm>=in) { update2(v*2,tl,tm,in); }else { update2(v*2+1,tm+1,tr,in); } long long a=segg[v*2]; long long b=segg[v*2+1]; // cout<<a<<' '<<b<<' '; // cout<<y[a]<<' '<<y[b]*get(1,0,n-1,a+1,b)<<endl; if(y[a]>(y[b]*get(1,0,n-1,a+1,b))) { segg[v]=a; }else { segg[v]=b; } } long long get2(long v,long tl,long tr,long l,long r) { if(l==tl&&r==tr) { return mu[v]; } long tm=(tl+tr)/2; if(r<=tm) { return get2(v*2,tl,tm,l,r); } if(l>tm) { return get2(v*2+1,tm+1,tr,l,r); } long long j=(get2(v*2,tl,tm,l,tm)*get2(v*2+1,tm+1,tr,tm+1,r))%mod; return j; } int init(int N, int X[], int Y[]) { // cout<<mod<<endl; n=N; for(long i=0;i<n;i++) { x[i]=X[i]; y[i]=Y[i]; } build(1,0,n-1); long jj=0; long in=0; long long ans=y[in]; long long o=1; long long t=in; for(long i=in+1;i<n;i++) { o*=x[i]; if(o>h) o=h; if(o*y[i]<y[t]) { continue; }else { t=i; o=1; } } return get(1,0,n-1,0,t)*y[t]; } int updateX(int pos, int val) { x[pos]=val; update(1,0,n-1,pos); long jj=0; long in=0; long long ans=y[in]; long long o=1; long long t=in; for(long i=in+1;i<n;i++) { o*=x[i]; if(o>h) { o=h; } if(o*y[i]<y[t]) { continue; }else { t=i; o=1; } } return get(1,0,n-1,0,t)*y[t]; } int updateY(int pos, int val) { y[pos]=val; update(1,0,n-1,pos); long jj=0; long in=0; long long ans=y[in]; long long o=1; long long t=in; for(long i=in+1;i<n;i++) { o*=x[i]; if(o>h) { o=h; } if(o*y[i]<y[t]) { continue; }else { t=i; o=1; } } return get(1,0,n-1,0,t)*y[t]; }

컴파일 시 표준 에러 (stderr) 메시지

horses.cpp: In function 'int init(int, int*, int*)':
horses.cpp:176:26: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
  176 |   return get(1,0,n-1,0,t)*y[t];
      |          ~~~~~~~~~~~~~~~~^~~~~
horses.cpp:157:10: warning: unused variable 'jj' [-Wunused-variable]
  157 |     long jj=0;
      |          ^~
horses.cpp:159:14: warning: unused variable 'ans' [-Wunused-variable]
  159 |    long long ans=y[in];
      |              ^~~
horses.cpp: In function 'int updateX(int, int)':
horses.cpp:206:27: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
  206 |    return get(1,0,n-1,0,t)*y[t];
      |           ~~~~~~~~~~~~~~~~^~~~~
horses.cpp:185:8: warning: unused variable 'jj' [-Wunused-variable]
  185 |   long jj=0;
      |        ^~
horses.cpp:187:14: warning: unused variable 'ans' [-Wunused-variable]
  187 |    long long ans=y[in];
      |              ^~~
horses.cpp: In function 'int updateY(int, int)':
horses.cpp:233:26: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
  233 |   return get(1,0,n-1,0,t)*y[t];
      |          ~~~~~~~~~~~~~~~~^~~~~
horses.cpp:212:11: warning: unused variable 'jj' [-Wunused-variable]
  212 |      long jj=0;
      |           ^~
horses.cpp:214:14: warning: unused variable 'ans' [-Wunused-variable]
  214 |    long long ans=y[in];
      |              ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...