제출 #387409

#제출 시각아이디문제언어결과실행 시간메모리
387409mehrdad_sohrabi말 (IOI15_horses)C++14
컴파일 에러
0 ms0 KiB
/// Black lives matter #include <bits/stdc++.h> //#include "horses.h" /// 500 485 462 A4 using namespace std; typedef long long int ll; typedef complex<double> point; typedef long double ld; #define pb push_back #define pii pair < ll , ll > #define F first #define S second //#define endl '\n' #define int long long #define sync ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0) #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math") #define kill(x) return cout<<x<<'\n', 0; const int N=5e5+10; ll seg[N*4]; set <int> s; ll x[N],y[N]; ll n; ll mod=1e9+7; ll ans=1; ll power(ll n,ll k){ if (k==0) return 1; if (k%2==1){ ll x=power(n,k/2); return x*x%mod*n%mod; } ll x=power(n,k/2); return x*x%mod; } void upd(ll nod,ll l,ll r,ll id,ll val){ if (r-l==1){ seg[nod]=val; return ; } ll mid=(r+l)/2; if (mid>id) upd(nod*2,l,mid,id,val); else upd(nod*2+1,mid,r,id,val); seg[nod]=max(seg[nod*2],seg[nod*2+1]); } ll get(ll nod,ll l,ll r,ll L,ll R){ if (l>=R || L>=r) return 0; if (l>=L && r<=R) return seg[nod]; ll mid=(r+l)/2; return max( get(nod*2,l,mid,L,R), get(nod*2+1,mid,r,L,R)); } ll solve(){ ll f=ans; ll e=1; ll q=0; for (int i=n-1;i>-1;i--){ q=max(q,y[i]); if (q>e){ f=ans*power(e,mod-2)%mod*q%mod; } e*=x[i]; if (e>(ll)1e9) break; } return f; ll jav=ans; ll cnt=1; auto t=s.end(); ll p1=0; for (int i=0;i<min((ll)s.size(),(ll)30);i++){ t--; ll z=get(1,0,n,*t,n); if (z>cnt){ jav=ans*power(cnt,mod-2)%mod*z%mod; } cnt*=x[*t]; if (cnt>(ll)1e9){ p1=1; break; } } if (p1==1){ ll z=get(1,0,n,0,n); if (z>cnt) jav=z; } return jav; } int32_t init(int32_t N, int32_t X[], int32_t Y[]) { n=N; for (int i=0;i<n;i++) { x[i]=X[i]; y[i]=Y[i]; upd(1,0,n,i,y[i]); if (x[i]>1) s.insert(i); // cout << x[i] << endl; ans*=x[i]; ans%=mod; } // cout << ans << " ans " << endl; return solve(); } int32_t updateX(int32_t pos, int32_t val) { ans=ans*power(x[pos],mod-2)%mod; ans*=val; ans%=mod; x[pos]=val; cout << ans << endl; if (x[pos]==1) s.erase(pos); else s.insert(pos); return solve(); } int32_t updateY(int32_t pos, int32_t val) { y[pos]=val; upd(1,0,n,pos,val); return solve(); } int32_t X[N],Y[N]; int32_t main(){ ll n; cin >> n; for (int i=0;i<n;i++){ cin >> X[i]; } for (int i=0;i<n;i++){ cin >> Y[i]; } cout << init(n,X,Y) << endl;; // cout << solve() << " solve " << endl; ll q; cin >> q; while(q--){ ll ty; cin >> ty; ll pos,val; cin >> pos >> val; if (ty==1){ cout << updateX(pos,val) << endl; } else cout << updateY(pos,val) << endl;; } } /* 3 2 1 3 3 4 1 1 2 1 2 */

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

horses.cpp: In function 'll power(ll, ll)':
horses.cpp:25:19: warning: declaration of 'n' shadows a global declaration [-Wshadow]
   25 | ll power(ll n,ll k){
      |                   ^
horses.cpp:22:4: note: shadowed declaration is here
   22 | ll n;
      |    ^
horses.cpp:28:12: warning: declaration of 'x' shadows a global declaration [-Wshadow]
   28 |         ll x=power(n,k/2);
      |            ^
horses.cpp:21:4: note: shadowed declaration is here
   21 | ll x[N],y[N];
      |    ^
horses.cpp:31:8: warning: declaration of 'x' shadows a global declaration [-Wshadow]
   31 |     ll x=power(n,k/2);
      |        ^
horses.cpp:21:4: note: shadowed declaration is here
   21 | ll x[N],y[N];
      |    ^
horses.cpp: In function 'int32_t init(int32_t, int32_t*, int32_t*)':
horses.cpp:85:49: warning: declaration of 'N' shadows a global declaration [-Wshadow]
   85 | int32_t init(int32_t N, int32_t X[], int32_t Y[]) {
      |                                                 ^
horses.cpp:18:11: note: shadowed declaration is here
   18 | const int N=5e5+10;
      |           ^
horses.cpp:97:14: warning: conversion from 'll' {aka 'long long int'} to 'int32_t' {aka 'int'} may change value [-Wconversion]
   97 |  return solve();
      |         ~~~~~^~
horses.cpp: In function 'int32_t updateX(int32_t, int32_t)':
horses.cpp:107:14: warning: conversion from 'll' {aka 'long long int'} to 'int32_t' {aka 'int'} may change value [-Wconversion]
  107 |  return solve();
      |         ~~~~~^~
horses.cpp: In function 'int32_t updateY(int32_t, int32_t)':
horses.cpp:113:14: warning: conversion from 'll' {aka 'long long int'} to 'int32_t' {aka 'int'} may change value [-Wconversion]
  113 |  return solve();
      |         ~~~~~^~
horses.cpp: In function 'int32_t main()':
horses.cpp:118:8: warning: declaration of 'n' shadows a global declaration [-Wshadow]
  118 |     ll n;
      |        ^
horses.cpp:22:4: note: shadowed declaration is here
   22 | ll n;
      |    ^
horses.cpp:126:18: warning: conversion from 'll' {aka 'long long int'} to 'int32_t' {aka 'int'} may change value [-Wconversion]
  126 |     cout << init(n,X,Y) << endl;;
      |                  ^
horses.cpp:136:29: warning: conversion from 'll' {aka 'long long int'} to 'int32_t' {aka 'int'} may change value [-Wconversion]
  136 |             cout << updateX(pos,val) << endl;
      |                             ^~~
horses.cpp:136:33: warning: conversion from 'll' {aka 'long long int'} to 'int32_t' {aka 'int'} may change value [-Wconversion]
  136 |             cout << updateX(pos,val) << endl;
      |                                 ^~~
horses.cpp:138:30: warning: conversion from 'll' {aka 'long long int'} to 'int32_t' {aka 'int'} may change value [-Wconversion]
  138 |         else cout << updateY(pos,val) << endl;;
      |                              ^~~
horses.cpp:138:34: warning: conversion from 'll' {aka 'long long int'} to 'int32_t' {aka 'int'} may change value [-Wconversion]
  138 |         else cout << updateY(pos,val) << endl;;
      |                                  ^~~
/tmp/ccOyOwMl.o: In function `main':
grader.c:(.text.startup+0x0): multiple definition of `main'
/tmp/ccHFaSGI.o:horses.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status