제출 #1117272

#제출 시각아이디문제언어결과실행 시간메모리
1117272Zflop말 (IOI15_horses)C++14
0 / 100
199 ms33864 KiB
#include <bits/stdc++.h> using namespace std; #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; #define ll long long const int NMAX = (int)1e5 * 5; const ll MOD = (int)1e9 + 7; ll A[NMAX],B[NMAX],n,seg_produs[NMAX * 4],seg_maxim[NMAX * 4]; void schimba_p(int i,ll v,int l,int r,int x) { if (i == l) { seg_produs[i] = v; return; } int mid = (l + r) / 2; if (i <= mid) schimba_p(i,v,l,mid,2 * x); else schimba_p(i,v,mid + 1,r,2 * x + 1); seg_produs[x] = seg_produs[2 * x] * seg_produs[2 * x + 1] % MOD; } ll get_p(int a,int b,int l,int r,int x) { if (a <= l && r <= b) return seg_produs[x]; if (r < a || b < l) return 1; int mid = (l + r) / 2; return get_p(a,b,l,mid,2 * x) * get_p(a,b,mid + 1,r,2 * x + 1) % MOD; } void schimba_m(int i,ll v,int l,int r,int x) { if (i == l) { seg_maxim[i] = v; return; } int mid = (l + r) / 2; if (i <= mid) schimba_m(i,v,l,mid,2 * x); else schimba_m(i,v,mid + 1,r,2 * x + 1); seg_maxim[x] = seg_maxim[2 * x] * seg_maxim[2 * x + 1] % MOD; } ll get_m(int a,int b,int l,int r,int x) { if (a <= l && r <= b) return seg_maxim[x]; if (r < a || b < l) return 0; int mid = (l + r) / 2; return max(get_m(a,b,l,mid,2 * x),get_m(a,b,mid + 1,r,2 * x + 1)); } ll POW(ll x,int p) { ll res = 1; while (p) { if (p % 2) res = res * x % MOD; p /= 2; x = x * x % MOD; } return res; } set<int>p; int init(int N, int X[], int Y[]) { for (int i = 0; i < NMAX * 4;++i) seg_produs[i] = 1; for (int i = 1; i <= N;++i) { A[i] = X[i - 1]; B[i] = Y[i - 1]; schimba_p(i,A[i],1,N,1); schimba_m(i,B[i],1,N,1); if (B[i] > 1) p.insert(i); } ll ans = 1; auto a = --p.end(); for (int i = min(40,N); i >= 1;--i,--a) { } n = N; return ans; } int updateX(int pos, int val) { A[pos] = val; ll ans = A[0] * B[0] % MOD; ll x = 1; int ans_i = 0; for (int i = max(1ll,n - 40); i < n;++i) { x = x * A[i]; if (B[ans_i] < x || x * B[i] > A[ans_i]) { x = 1; ans_i = i; ans = x * B[i] % MOD; } } return ans; } int updateY(int pos, int val) { B[pos] = val; A[pos] = val; ll ans = A[0] * B[0] % MOD; ll x = 1; int ans_i = 0; for (int i = max(1ll,n - 40); i < n;++i) { x = x * A[i]; if (B[ans_i] < x || x * B[i] > A[ans_i]) { x = 1; ans_i = i; ans = x * B[i] % MOD; } } return ans; }

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

horses.cpp: In function 'int init(int, int*, int*)':
horses.cpp:77:9: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   77 |  return ans;
      |         ^~~
horses.cpp: In function 'int updateX(int, int)':
horses.cpp:85:18: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   85 |  for (int i = max(1ll,n - 40); i < n;++i) {
      |               ~~~^~~~~~~~~~~~
horses.cpp:93:9: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   93 |  return ans;
      |         ^~~
horses.cpp: In function 'int updateY(int, int)':
horses.cpp:102:18: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
  102 |  for (int i = max(1ll,n - 40); i < n;++i) {
      |               ~~~^~~~~~~~~~~~
horses.cpp:110:9: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
  110 |  return ans;
      |         ^~~
#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...